Dass die Montage erlaubt nicht teilweise vertrauenswürdigen Anrufer. Initialisieren der Komponente()

StackOverflow https://stackoverflow.com/questions/4314420

Frage

Szenario: Ich bin in dem Prozess eines unsere Anwendungen Refactoring Nhibernate zu nutzen und kam ein paar Wochen wieder über dieses Thema. Die Frage war ursprünglich mit Nhibernate und Schloss und diese zu lösen, die sie beide mit dem [assembly: AllowPartiallyTrustedCallers] neu kompiliert wurden. Doch nach ein paar Änderungen an der Benutzeroberfläche machen und Code-Basis dieser Fehler wieder wurde wieder auf. Erwähnenswert ist auch, dass ich die Lade Kontrollen meinen Benutzer steuern programmatisch von Form_Main.

Problem: Jedes Mal, wenn der Benutzer steuert erzeugt werden erhalte ich den Fehler unten. Wenn ich den Laden kommentieren Sie dann das Programm ausführen. Wenn ich debuggen endet es an der InitializeComponent () -Funktion, die automatisch generiert wird. Beachten Sie, dass ich nicht in diese Funktion treten 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 irgendwelche Ideen zu diesem Thema? Ich habe bereits hinzugefügt [assembly: AllowPartiallyTrustedCallers] auf der Baugruppe. Gibt es eine Möglichkeit, um herauszufinden, welche Referenz (?) Diesen Fehler verursacht? Oder eine Möglichkeit, um Schritt für Schritt durch InitializeComponent ()?

. Hinweis: Ich habe jede Berechtigung enthalten und das Projekt wird auf Teil Vertrauen

Wie auch immer ist jede Hilfe sehr dankbar.

War es hilfreich?

Lösung

OK, wenn ich dieses Problem zu beheben wäre, würde ich es Ansatz wie folgt:

1) Wenn ich .NET bin mit 4.0 stellen Sie sicher, this ist bereits behandelt.

2) Verwenden Sie ILDASM oder Reflektor alle DLLs in Frage auf dem Fach-Ordner zu öffnen, um sicherzustellen, AllowPartiallyTrustedCallersAttribute auf sie gesetzt.

3) Verwendung AppDomain.CurrentDomain.GetAssemblies() zum Zeitpunkt des Fehlers (unter Verwendung von Direkt-Fenster) zu sehen, welche geladen wird, von wo Montage. Das denke ich könnte Ihr Problem, da ich zu oft gesehen, dass alte oder Rogue-Versionen von Baugruppen aus GAC oder verschiedenen sind Ordner geladen werden

Ich denke, diese drei Schritte können Sie Ihr Problem finden.

Andere Tipps

Für alle zukünftigen Leser , die die Ausführungen unter Aliostad Antwort verpasst haben.

Im Grunde, was für mich gearbeitet wurde unter Aliostad des Beratung und neu zu kompilieren alle Referenzen kann ich mit AllowPartiallyTrustedCallersAttribute . Um die Baugruppen zu überprüfen, die ich geladen, gefolgt Schritt 2 Aliostad des Beratung. Sobald ich sicher gemacht hatte alle hatten die erforderlich dll dieses Attribut enthalten ich dieses Attribut in mein Projekt und dann auf mein Projekt gesetzt volles Vertrauen (nicht teilweise Vertrauen).

Hinweis: Ich Microsoft.Office.Interop.Outlook bin mit E-Mails senden und es erfordert volles Vertrauen, aber immer noch erlaubt die anderen DLL in Teil Vertrauen zu laufen ist.

Hope diese Hilfe zukünftige Nutzer. Haben Sie Fragen nur unter kommentieren.

Ich habe diesen Fehler, wenn eine DLL-Datei von einem Speicherort im Netzwerk ausgeführt wird. Die DLL war eine Erweiterung für ESRI ArcGIS mit ArcObjects in ArcGIS 10.1 ausgeführt wird. Lösung nicht öffnet Projekt vom Speicherort im Netzwerk.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top