2009-11-30 6 views
7

Estamos viendo intermitentemente la siguiente excepción poco después de una reciclar grupo de aplicaciones en una aplicación ASP.NET:intermitente PolicyException: permiso de ejecución no puede ser adquirido

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 específico que no se puede cargar varía de un incidente a incidente , pero siempre es uno al que hace referencia el ensamblaje principal.

Nos estamos ejecutando en ASP.NET 3.5 en Windows Server 2008. Esto parece suceder en lotes que afectan algunos, pero no todos, los sitios en el mismo grupo de aplicaciones. Tenemos una gran cantidad de sitios todos ejecutando el mismo código.

Una vez que un sitio no ha podido cargar una DLL, lanza una pantalla amarilla de la muerte hasta que se recicla el siguiente grupo de aplicaciones. No hemos podido reproducir este comportamiento y los sitios parecen funcionar bien durante días o semanas a la vez (y muchos reciclados en el Pool de aplicaciones) antes de fallar.

¿Alguien ha visto comportamiento similar?

Actualización:

Hemos intentado reproducir el fallo mediante el establecimiento de unos pocos cientos de sitios y escribir un guión para golpear repetidamente mientras reciclar el grupo de aplicaciones una vez cada dos minutos y fueron incapaces de lograr mucho aparte de cargar la CPU del servidor por unos días seguidos.

Probamos messing (bloqueando uno de los archivos DLL, cambiando los permisos del archivo) con las copias de los archivos DLL que ASP.NET genera y logró reproducir un comportamiento similar pero no la misma excepción.

¿Alguien tiene alguna idea sobre cómo ajustar la política de seguridad para conseguir que tire System.Security.Policy.PolicyException: Execution permission cannot be acquired. al cargar una DLL específica?

+0

ningún software antivirus instalado en los servidores que podrían estar interfiriendo? –

Respuesta

Cuestiones relacionadas