2009-10-23 25 views
5

Howdy all. Próbuję rozwiązać problem, który najwyraźniej nie jest rzadkością i nie jestem pewien, jak znaleźć rozwiązanie tego problemu dla ludzi. Kiedy uruchamiam StructureMap na moim komputerze przez IIS uzyskać wyjątek i wygląda to tak:StructureMap, IIS 7.5 i 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. 

To pytanie ma pochodzić tutaj na SO (https://stackoverflow.com/questions/784666/) in the comments on this blog post i a year or so ago on the structuremap mailing list.

Mój problem nie działa w obcym środowisku hostingowym. Nie mogę nawet uruchomić go na moim własnym komputerze (IIS 7.5, Win7 RC, .NET 3.5). Próbowałem skonfigurować witrynę, aby używać niestandardowego pliku zasad, a FileIOPermission jest oznaczony jako nieograniczony dostęp ... żadnych kości. Jeśli ktoś ma jakieś wskazówki lub link, byłoby to bardzo cenne.

Aktualizacja Więc nie ma możliwości, że jest to najlepszy sposób na rozwiązanie tego problemu, ale po wykopaniu się i patrząc na to, co wspomniano Joshua, to są rzeczy miałem zrobić, aby dostać pracy: StructureMap, Code Access Security and a Bad Solution to a Problem. Lepsze rozwiązanie byłoby docenione.

+0

Jak zauważono w przyjętej odpowiedzi, sposób radzenia sobie z tą sytuacją okazał się być zmianą kodu w StructureMap. Nie było potrzeby zmiany konfiguracji usług IIS. – Mallioch

Odpowiedz

0

To jest błąd i został naprawiony w bagażniku. Zostanie uwzględniony w wydaniach 2.6+. Niektóre wcześniejsze wersje StructureMap próbowałyby niepotrzebnie zapisać zespoły dynamiczne na dysku lub niepotrzebnie próbować odczytać z systemu plików.

Jeśli pracujesz w środowisku zastrzeżonym, które nie pozwala na dostęp do pełnych ścieżek w systemie plików (ASP.NET), upewnij się, że podczas konfigurowania kontenera ustawiono IgnoreDefaultFile = true. Należy pamiętać, że spowoduje to wyłączenie możliwości załadowania konfiguracji XML z pliku StructureMap.config.

+0

Używam wersji 2.5.3. Nie zbudowałem tego ze źródła. – Mallioch

2

Za to, co jest warte, wpadłem na ten sam problem, w którym miałem pełną kontrolę nad skrzynką, a nawet ustawiłem wszystkie uprawnienia do pełnego zaufania. W IIS 7.5 musiałem zmienić tożsamość używaną dla konkretnej puli aplikacji na NetworkService zamiast ApplicationPoolIdentity. Po ponownym uruchomieniu usług IIS zadziałało.

+0

To rozwiązało problem dla mnie. –

0

Korzystanie z oficjalnej StructureMap 2.5.4 na systemie Windows 7 z IIS 7.5 Nadal napotkałem ten problem. zmiana Mallioch za

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

było konieczne, aby rozwiązać wyjątek FileIOPermission ale potem otrzymał Request for the permission of type ‘System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′ failed. które rozdzielono stosując rozwiązanie Mike'a (dla których stworzyliśmy step-by-step visualization).

1

FYI, używam StructureMap v2.6.1 i wpadłem na ten problem.

Nie używam konfiguracji XML, więc dodałem następujący wiersz do mojego kodu konfiguracji, który naprawił problem.

Powiązane problemy