2009-12-04 11 views
30

me sale este error cuando estoy usando FileHelpers.dll, pero mi IIS se establece en el nivel de confianza Full por lo que no debería ser asíIIS7 no concedió permiso mínimo solicita

Esa es la traza completa:

[PolicyException: Required permissions cannot be acquired.] 
     System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +10238142 
     System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +97 

    [FileLoadException: Could not load file or assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)] 
     System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0 
     System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +416 
     System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +166 
     System.Reflection.Assembly.Load(String assemblyString) +35 
     System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +190 

    [ConfigurationErrorsException: Could not load file or assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)] 
     System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11207304 
     System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +388 
     System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +232 
     System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +48 
     System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +210 
     System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName) +76 
     System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +283 
     System.Web.Compilation.BuildManager.CompileGlobalAsax() +50 
     System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +676 

    [HttpException (0x80004005): Could not load file or assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)] 
     System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +76 
     System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +1012 
     System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +1025 

[HttpException (0x80004005): Could not load file or assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11301302 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +88 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4338644 

Respuesta

81

que tenía un problema similar cuando reconstruí mi máquina dev con una limpia de Windows 7 instalar. Después de buscar descubrí una solución que funcionó para mí.

En la configuración avanzada del conjunto de aplicaciones de IIS, en "Modelo de proceso", establezca Cargar perfil de usuario en verdadero.

Hay otras cosas para verificar, como su nivel de confianza, pero ninguna de ellas se aplicó a mí (ya tenía plena confianza en mi máquina de desarrollo). Configurar el grupo de aplicaciones para cargar el perfil de usuario lo solucionó.

+0

¿Dónde se encuentra este modelo de proceso? – Omu

+2

Iniciar/ejecutar inetmgr. Mire en Grupos de aplicaciones. Haga clic derecho en su grupo de aplicaciones. Seleccione Configuraciones Avanzadas. Ahí está –

2

Tuvimos un problema similar con Windows 2008 R2 donde nuestra aplicación funcionaría bien en el modo de 64 bits, pero cuando cambió al modo de 32 bits dejaría de funcionar y arrojaría el error de permiso, resulta en IIS7 en Configuración avanzada >> Proceso Modelo >> la configuración de "Identidad" se cambió a "Identidad del grupo de aplicaciones" de forma predeterminada y es posible que deba cambiarse a "Servicio de red" para que funcione en el modo de 32 bits.

Lo hicimos y ahora estamos tarareando sin problemas. Supuse que esta información podría ser la razón por la que todo el mundo apunta a los permisos de la carpeta, ya que técnicamente es un problema de permiso de la carpeta. Pero el cambio fue en IIS y no en la configuración de seguridad de las carpetas.

+0

Lo mismo funcionó para mí como lo describe Samuel ... Solo para agregar una cosa, esta es la configuración Avanzada del conjunto de aplicaciones ... – riz

20

He visto este error en otra instancia donde, por ejemplo, IIS ejecuta una aplicación o ruta virtual a través de una ruta UNC (es decir, \\svr\share\folder). Incluso si Load User Profile=true recibo el error PolicyException. Fue resuelto ejecutando el Code Access Security Policy Tool (Caspol.exe) para agregar plena confianza a la ruta UNC. Ya que teníamos tanto 64 bit y 32 bit de .Net 2.x y .Net 4.x, me encontré que en los cuatro entornos de la siguiente manera:

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on 
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on 
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on 
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on 

Algunas notas de precaución:

  • Para .Net 4.x asegúrese de que el NetFx40_LegacySecurityPolicy a true o los comandos caspol.exe no funcionarán como se esperaba.
  • Hacer no agregar entradas duplicadas con caspol.exe para un entorno determinado. Ejecutar los comandos de abajo para ver sus entradas:

    %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -a -lg

+5

¡Gracias por esta respuesta! Este particular conocimiento de caso de borde no se obtiene fácilmente. – csmosx

2

Parece ser que esto es algo de una Asamblea genérica no se puede cargar error. Aprecio todas las otras publicaciones ya que se convirtieron en una lista de posibles fuentes del error.

Encontré una más. Había intentado todo lo anterior sin éxito. Finalmente me di cuenta de que estaba publicando la aplicación web de Visual Studios Express 2008 con una configuración de Build de 'Debug'. Después de cambiar la configuración de compilación a 'versión', la aplicación web funcionó.

Datos específicos: Visual Studios Express 2008 mueve archivos a IIS7.5 en el servidor Win 2008 R2.

-2

En la configuración avanzada del conjunto de aplicaciones de IIS 6.0, en "Modelo de proceso", establezca Cargar perfil de usuario en verdadero.

Hay otras cosas para verificar, como su nivel de confianza, pero ninguna de ellas se aplicó a mí (ya tenía plena confianza en mi máquina de desarrollo). Configurar el grupo de aplicaciones para cargar el perfil de usuario lo solucionó.

que ayudan a resolver

permisos requeridos no pueden ser adquiridos en IIS para resolverlo ..

1

que tenían problemas similares, que resolvieron el problema con los pasos siguientes:

  1. Ir a IIS .
  2. Haga clic derecho en la carpeta del sitio web y vea su grupo de aplicaciones.
  3. Haga clic con el botón derecho en el grupo de aplicaciones y vaya a la configuración avanzada.
  4. En la sección de modelo de proceso de establecer load user profile a true
1

el problema de ella es pertenecen a utilizar no DDL de confianza para el SharePoint para resolver el problema:

  1. abrir el IIS
  2. clic en .net niveles más auténticos
  3. eligió completo (interno)
Cuestiones relacionadas