Después del despliegue de la nueva versión de nuestra aplicación ASP.NET 2.0, comenzó a aumentar la excepción de seguridad: "System.Security.SecurityException: solicitud del permiso de tipo 'System.Web.AspNetHostingPermission, System, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' failed. ".Excepciones de seguridad en ASP.NET y la opción Cargar perfil de usuario en IIS 7.5
Después de una búsqueda rápida en Internet, pudimos resolver este problema configurando "Cargar perfil de usuario" en True en el grupo de aplicaciones de IIS 7.5. Esta solución también se menciona varias veces aquí en stackoverflow:
- Strange ASP.NET error !
- System.Web.AspNetHostingPermission Exception on New Deployment
- Running a asp.net web application project on IIS7 throws exception
Sin embargo no hemos podido encontrar por lo que tiene que ser verdad. Revisamos todos los cambios en la nueva versión (afortunadamente solo había unos pocos), pero no encontramos nada sospechoso (sin acceso a los datos de registro o temperatura, como sugerían algunos artículos, etc.). ¿Podría alguien darnos pistas cuando una aplicación ASP.NET alojada en IIS 7.5 necesita la opción "Cargar perfil de usuario" establecida en True?
Detalles:
-
piscina
- Aplicación: .NET 2.0; Modo de canal gestionado: clásico; Identidad - cuenta de dominio personalizado
- En IIS 6.0 (W2K3): Vieja y nueva versión de trabajo de aplicación bien
- En IIS 7.5 (W2K8-R2): Versión antigua de aplicación funciona bien; nueva versión de la aplicación aumenta la seguridad excepción - que comienza a trabajar después de ajuste “Cargar perfil de usuario” True
Gracias!
EDIT: ¡Finalmente hemos encontrado la causa de este problema! Nuestro administrador utilizó una técnica diferente para copiar la nueva versión de la aplicación del entorno de ensayo al entorno de producción. Él utilizó el servidor web como intermediario. Después de descargar los artefactos de compilación de liberación comprimida al entorno de producción y luego descomprimir los archivos, aún se marcaron como "bloqueados" porque procedían de una computadora diferente. Vea también https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a. ASP.NET luego ejecuta lógicamente estos archivos binarios en confianza parcial en lugar de confianza total y que en realidad causaba las excepciones de seguridad mencionadas en nuestra aplicación.
Al establecer "Cargar perfil de usuario" en True se corrigieron las excepciones de seguridad como efecto colateral. Si "Cargar perfil de usuario" está configurado en Falso, entonces nuestra aplicación (no nuestro código, tal vez algunos).NET BCL o ensamblado externo) está intentando consultar información básica sobre el directorio "C: \ Windows \ System32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files" que no permite la identidad del grupo de aplicaciones:
- con plena confianza: acceso denegado a esta operación de consulta no plantea ninguna excepción
- con confianza parcial: acceso denegado a esta operación de consulta plantea excepción de seguridad
Si "Cargar perfil de usuario" es establecido en True, el perfil temporal en el directorio Users se crea cada vez que se inicia el grupo de aplicaciones. Nuestra aplicación está tratando de consultar información sobre el directorio "Archivos temporales de Internet" de este perfil, que permite la identidad del grupo de aplicaciones. Por lo tanto, no se levanta ninguna excepción incluso con confianza parcial.
¡Sesión de solución de problemas realmente agradable! :)
Gracias por el trabajo de investigación Peter, tuve el mismo problema y la utilidad streams (enumerada en la pregunta superuser.com) fue cómo desbloqueé todos los archivos en el directorio de mi webapp. ¡Y ahora puedo desactivar la opción Cargar perfil de usuario! –
Totalmente excelente, acabamos de encontrarnos con este problema y no pudimos explicarlo correctamente. –
a continuación la respuesta tiene la explicación detallada http://stackoverflow.com/questions/17149132/what-exactly-happens-when-i-set-loaduserprofile-of-iis-pool –