2009-10-23 9 views
5

Hallo alle. Ich versuche, ein Problem zu lösen, das anscheinend nicht ungewöhnlich ist, und ich bin nicht sicher, wie man findet, wie das für Leute aufgelöst wurde. Als ich StructureMap auf meinem Rechner über IIS laufen erhalte ich eine Ausnahme, und es sieht wie folgt aus:StructureMap, IIS 7.5 und FileIOException

**Description**: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 
**Exception Details**: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

Diese Frage an SO hier hat kommen (https://stackoverflow.com/questions/784666/), in the comments on this blog post und a year or so ago on the structuremap mailing list.

Mein Problem läuft nicht in einer fremden Hosting-Umgebung. Ich kann es nicht einmal auf meiner eigenen Box (IIS 7.5, Win7 RC, .NET 3.5) ausführen. Ich habe versucht, die Site zu konfigurieren, um eine benutzerdefinierte Richtliniendatei zu verwenden, und die FileIOPermission wird markiert, um uneingeschränkten Zugriff zu haben ... keine Würfel. Wenn jemand einige Tipps oder einen Link hat, würde es sehr geschätzt werden.

aktualisiert So gibt es keine Möglichkeit, dass dies der beste Weg ist, um das Problem zu lösen, aber nach etwa Graben und auf der Suche in dem, was Joshua erwähnte, das sind die Dinge, die ich es Arbeit zu bekommen zu tun hatte zu: StructureMap, Code Access Security and a Bad Solution to a Problem. Eine bessere Lösung würde geschätzt werden.

+0

Wie in der akzeptierten Antwort erwähnt, stellte sich heraus, dass die Art und Weise, dies zu handhaben, eine Codeänderung in StructureMap war. Keine IIS-Konfigurationsänderungen waren notwendig. – Mallioch

Antwort

0

Dies ist ein Fehler und wurde im Kofferraum behoben. Es wird in den Versionen 2.6+ enthalten sein. Einige frühere Versionen von StructureMap würden entweder versuchen, die dynamischen Assemblys unnötigerweise auf die Festplatte zu schreiben, oder unnötigerweise versuchen, aus dem Dateisystem zu lesen.

Wenn Sie in einer eingeschränkten Umgebung arbeiten, die den Zugriff auf vollständige Pfade im Dateisystem (ASP.NET) nicht zulässt, stellen Sie sicher, IgnoreDefaultFile = True festzulegen, wenn Sie Ihren Container konfigurieren. Beachten Sie, dass dies die Möglichkeit zum Laden der XML-Konfiguration aus StructureMap.config deaktiviert.

+0

Ich benutze Version 2.5.3. Ich habe es nicht aus der Quelle gebaut. – Mallioch

2

Für was es wert ist, stieß ich auf das gleiche Problem, wo ich die volle Kontrolle über die Box hatte und sogar alle Berechtigungen auf volle Vertrauenswürdigkeit setzen. Mit IIS 7.5 musste ich die für den bestimmten Anwendungspool verwendete Identität zu NetworkService anstelle von ApplicationPoolIdentity ändern. Sobald ich IIS neu gestartet habe, funktionierte es.

+0

Das löste das Problem für mich. –

0

Mit dem offiziellen StructureMap 2.5.4 unter Windows 7 mit IIS 7.5 bin ich immer noch auf dieses Problem gestoßen. Mallioch der Änderung

ObjectFactory.Initialize(x => 
    { 
     x.UseDefaultStructureMapConfigFile = false; 
     x.IgnoreStructureMapConfig = true; 

war notwendig, um die FileIOPermission Ausnahme zu lösen, aber ich erhielt dann Request for the permission of type ‘System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′ failed., die ich mit Mike-Lösung gelöst (für die ich eine step-by-step visualization erstellt haben).

1

FYI, ich benutze StructureMap v2.6.1 und lief in dieses Problem.

Ich verwende keine XML-Konfiguration, daher habe ich die folgende Zeile zu meinem Konfigurationscode hinzugefügt, wodurch das Problem behoben wurde.

IgnoreStructureMapConfig = true;