2009-11-30 6 views
7

Jesteśmy przerwami widząc następujący wyjątek wkrótce po recyklingu puli aplikacji w aplikacji ASP.NET:Przerywany PolicyException: Pozwolenie realizacji nie mogą być nabywane

System.Configuration.ConfigurationErrorsException: Could not load file or assembly 'Microsoft.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) ---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) 
File name: 'Microsoft.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.Security.Policy.PolicyException: Execution permission cannot be acquired. 
    at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) 
    at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) 
    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
    at System.Reflection.Assembly.Load(String assemblyString) 
    at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) 

Specyficzny DLL, że nie można załadować waha się od wypadku do wypadku , ale zawsze jest odniesieniem do głównego zespołu.

Pracujemy na ASP.NET 3.5 na Windows Server 2008. Wydaje się, że dzieje się to w partiach wpływających na niektóre, ale nie wszystkie witryny w tej samej puli aplikacji. Mamy dużą liczbę witryn z tym samym kodem.

Gdy witryna nie załadowała biblioteki DLL, wyświetla żółty ekran śmierci, aż do odtworzenia następnej puli aplikacji. Nie byliśmy w stanie odtworzyć tego zachowania, a witryny wydają się działać dobrze przez kilka dni lub tygodni (i wiele aplikacji odtwarza pulę), zanim się nie powiodą.

Czy ktoś inny widział podobne zachowanie?

Aktualizacja:

Staraliśmy odtwarzając awarię poprzez utworzenie kilkaset stron i napisanie skryptu, aby je uderzyć kilkakrotnie podczas zawracania App Pool raz co kilka minut i nie byli w stanie osiągnąć wiele poza obciążaniem procesora serwera przez kilka dni.

Następnie próbowaliśmy zepsuć (blokując jedną z bibliotek DLL, zmieniając uprawnienia do pliku) kopiami bibliotek DLL, które tworzy ASP.NET i udało się odtworzyć podobne zachowanie, ale nie ten sam wyjątek.

Czy ktoś ma jakieś pomysły na temat dostosowania polityki bezpieczeństwa, aby zmusić go do rzucenia System.Security.Policy.PolicyException: Execution permission cannot be acquired. podczas ładowania określonej biblioteki DLL?

+0

wszelkie oprogramowanie antywirusowe zainstalowane na serwerach, które mogłyby być zakłócających? –

Odpowiedz

Powiązane problemy