Szenario: Ich bin gerade dabei, eine unserer Anwendungen für die Verwendung von Nhibernate zu refaktorisieren und kam vor ein paar Wochen auf dieses Problem. Das Problem war ursprünglich mit Nhibernate und Castle und um dies zu lösen, wurden beide mit der [assembly: AllowPartiallyTrustedCallers]
neu kompiliert. Nachdem jedoch einige Änderungen an der Benutzeroberfläche und der Codebasis vorgenommen wurden, ist dieser Fehler erneut aufgetreten. Auch erwähnenswert ist, dass ich das Laden meiner Benutzer steuert programmgesteuert von Form_Main steuert.Diese Assembly lässt teilweise vertrauenswürdige Anrufer nicht zu. InitializeComponent()
Problem: Immer wenn die Benutzersteuerelemente generiert werden, erhalte ich den Fehler unten. Wenn ich das Laden auskommentiere, wird das Programm ausgeführt. Wenn ich es debugge, endet es bei der Funktion InitializeComponent(), die automatisch generiert wird. Beachten Sie, dass ich diese Funktion nicht ausführen kann.
System.Security.SecurityException was unhandled
Message="That assembly does not allow partially trusted callers."
Source="A"
GrantedSet=""
PermissionState=""
RefusedSet=""
Url="file:///C:/Documents and Settings/ID/Desktop/A-NHIB2/bin/Debug/A.EXE"
StackTrace:
at A.UserControlCyber.InitializeComponent()
at A.UserControlCyber..ctor() in C:\Documents and Settings\ID\Desktop\A-NHIB2\UserControl_Cyber.cs:line 34
at A.FormMain.FormMainLoad(Object sender, EventArgs e) in C:\Documents and Settings\ID\Desktop\A-NHIB2\Form_Main.cs:line 30
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at A.Program.Main() in C:\Documents and Settings\ID\Desktop\A-NHIB2\Program.cs:line 32
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
at System.Activator.CreateInstance(ActivationContext activationContext)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Wer hat irgendwelche Ideen zu diesem Thema? Ich habe bereits [Assembly: AllowPartiallyTrustedCallers] zur Assembly hinzugefügt. Gibt es eine Möglichkeit herauszufinden, welche Referenz (?) Diesen Fehler verursacht? Oder irgendeine Möglichkeit, durch InitializeComponent() zu gehen?
HINWEIS: Ich habe alle Berechtigungen enthalten und das Projekt ist teilweise Vertrauen gesetzt.
Anyways jede Hilfe wird sehr geschätzt.
C: \ Dokumente und Einstellungen \ ID \ Desktop, ist das ein echter Pfad oder hast du ihn bearbeitet? Apps, die vom Laufwerk C: ausgeführt werden, sollten immer mit voller Vertrauenswürdigkeit ausgeführt werden. Neukompilierung versteckte nur das eigentliche Problem. –
@Hans Passant, ID ist mein Benutzername, den ich entfernt habe. Gerade jetzt, ich führe das Programm mit den ausgewählten Berechtigungen von meinem lokalen Computer aus, so dass ich nicht jedes Mal auf die Netzwerkfreigabe veröffentlichen muss, um es zu testen. – Gage
Ich würde vermuten, dass "ausgewählte Berechtigungen" Ihr Problem ist. Dies in Ihrer Frage nicht zu dokumentieren, ist ein großer Fehler. –