ASP.NET implementación web mediante Visual Studio: Establecer permisos de carpeta

por Tom Dykstra

Descargar proyecto de inicio

En esta serie de tutoriales se muestra cómo implementar (publicar) una aplicación web de ASP.NET en Azure App Service Web Apps o en un proveedor de hospedaje de terceros mediante Visual Studio 2012 o Visual Studio 2010. Para obtener información sobre la serie, consulte el primer tutorial de la serie.

Visión general

En este tutorial, establecerá permisos de carpeta para la carpeta Elmah en el sitio web implementado para que la aplicación pueda crear archivos de registro en esa carpeta.

Al probar una aplicación web en Visual Studio mediante Visual Studio Development Server (Cassini) o IIS Express, la aplicación se ejecuta bajo su identidad. Lo más probable es que seas administrador en tu equipo de desarrollo y tengas toda la autoridad para hacer cualquier cosa en cualquier archivo de cualquier carpeta. Pero cuando una aplicación se ejecuta en IIS, se ejecuta en la identidad definida para el grupo de aplicaciones al que está asignado el sitio. Normalmente, se trata de una cuenta definida por el sistema que tiene permisos limitados. De forma predeterminada, tiene permisos de lectura y ejecución en los archivos y carpetas de la aplicación web, pero no tiene acceso de escritura.

Esto se convierte en un problema si la aplicación crea o actualiza archivos, lo que es una necesidad común en las aplicaciones web. En la aplicación Contoso University, Elmah crea archivos XML en la carpeta Elmah para guardar detalles sobre los errores. Incluso si no usa algo como Elmah, el sitio podría permitir que los usuarios carguen archivos o realicen otras tareas que escriban datos en una carpeta del sitio.

Aviso: Si recibe un mensaje de error o algo no funciona mientras recorre el tutorial, asegúrese de comprobar la página de solución de problemas.

Registro e informes de errores de prueba

Para ver cómo la aplicación no funciona correctamente en IIS (aunque se probó en Visual Studio), puede provocar un error que normalmente lo registraría Elmah y, a continuación, abrir el registro de errores de Elmah para ver los detalles. Si Elmah no pudo crear un archivo XML y almacenar los detalles del error, verá un informe de errores vacío.

Abra un explorador y vaya a http://localhost/ContosoUniversity, a continuación, solicite una dirección URL no válida como Studentsxxx.aspx. Ve una página de error generada por el sistema en lugar de la página GenericErrorPage.aspx porque la customErrors configuración del archivo Web.config es "RemoteOnly" y usted ejecuta IIS localmente:

Página de error HTTP 404

Ahora ejecute Elmah.axd para ver el informe de errores. Después de iniciar sesión con las credenciales de la cuenta de administrador ("admin" y "devpwd"), verá una página de registro de errores vacía porque Elmah no pudo crear un archivo XML en la carpeta Elmah :

Registro de errores vacío

Establecer el permiso de escritura en la carpeta Elmah

Puede establecer los permisos de carpeta manualmente o puede convertirlo en una parte automática del proceso de implementación. Automatizarlo requiere un código complejo de MSBuild, y dado que solo tiene que hacerlo la primera vez que despliega, a continuación se describen los pasos para hacerlo manualmente. (Para obtener información sobre cómo hacer que esta parte del proceso de implementación, vea Establecer permisos de carpeta en la publicación web en el blog de Sayed Hashimi).

  1. En el Explorador de archivos, vaya a C:\inetpub\wwwroot\ContosoUniversity. Haga clic con el botón derecho en la carpeta Elmah , seleccione Propiedades y, a continuación, seleccione la pestaña Seguridad .

  2. Haga clic en Editar.

  3. En el cuadro de diálogo Permisos para Elmah , seleccione DefaultAppPool y, a continuación, active la casilla Escribir de la columna Permitir .

    Permisos para la carpeta ELMAH

    (Si no ve DefaultAppPool en la lista De nombres de grupo o de usuario , probablemente usó algún otro método que el especificado en este tutorial para configurar IIS y ASP.NET 4 en el equipo. En ese caso, averigüe qué identidad usa el grupo de aplicaciones asignado a la aplicación Contoso University y conceda permiso de escritura a esa identidad. Consulte los vínculos sobre las identidades del grupo de aplicaciones al final de este tutorial). Haga clic en Aceptar en ambos cuadros de diálogo.

Volver a probar el registro de errores y los informes

Pruebe al provocar un error de nuevo de la misma manera (solicite una dirección URL incorrecta) y ejecute la página Registro de errores . Esta vez aparece el error en la página.

Página registro de errores de ELMAH

Resumen

Ahora ha completado todas las tareas necesarias para que Contoso University funcione correctamente en IIS en el equipo local. En el siguiente tutorial, hará que el sitio esté disponible públicamente mediante la implementación en Azure.

Información adicional

En este ejemplo, el motivo por el que Elmah no pudo guardar los archivos de registro era bastante obvio. Puede usar el seguimiento de IIS en casos en los que la causa del problema no sea tan obvia; consulte Solución de problemas de solicitudes con errores mediante el seguimiento en IIS 7 en el sitio de IIS.net.

Para obtener más información sobre cómo conceder permisos a las identidades del grupo de aplicaciones, consulte Identidades de grupo de aplicaciones y contenido seguro en IIS a través de ACL del sistema de archivos en el sitio de IIS.net.