2009-11-30 6 views
7

Nous voyons par intermittence l'exception suivante peu après un recyclage piscine App dans une application ASP.NET:PolicyException intermittente: l'autorisation d'exécution ne peut être acquise

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) 

La DLL spécifique qui ne se charge varie d'un incident à , mais est toujours référencé par l'assembly principal.

Nous fonctionnons sur ASP.NET 3.5 sur Windows Server 2008. Cela semble se produire dans des lots affectant certains mais pas tous les sites du même App Pool. Nous avons un grand nombre de sites qui utilisent tous le même code.

Une fois qu'un site n'a pas réussi à charger une DLL, il affiche un écran de décès jaune jusqu'au prochain pool d'applications. Nous n'avons pas été en mesure de reproduire ce comportement et les sites semblent fonctionner correctement pendant des jours ou des semaines à la fois (et de nombreux recyclages App Pool) avant d'échouer.

Est-ce que quelqu'un d'autre a vu un comportement similaire?

Mise à jour:

Nous avons essayé de reproduire l'échec en mettant en place quelques centaines de sites et d'écrire un script pour les frapper à plusieurs reprises tout en recyclant la piscine App une fois de quelques minutes et ont été incapables d'accomplir beaucoup autre que le chargement du CPU du serveur pendant quelques jours d'affilée. Nous avons ensuite tenté de déconner (en verrouillant l'une des DLL, en modifiant les autorisations de fichier) avec les copies des DLL qu'ASP.NET crée et gère pour reproduire un comportement similaire mais pas la même exception.

Est-ce que quelqu'un a des idées sur la façon d'ajuster la politique de sécurité pour l'amener à lancer un System.Security.Policy.PolicyException: Execution permission cannot be acquired. lors du chargement d'une DLL spécifique?

+0

tout logiciel anti-virus installé sur les serveurs qui pourraient interférer? –

Répondre

Questions connexes