Compartir a través de


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

por Tom Dykstra

Descarga del proyecto de inicio

Esta serie de tutoriales muestra cómo implementar (publicar) una aplicación web 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 de tutoriales, consulte el primer tutorial de la serie.

Informació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. Es más probable que sea un administrador en el equipo de desarrollo y tenga 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 y, a continuación, solicite una dirección URL no válida como Studentsxxx.aspx. Verá una página de error generada por el sistema en lugar de la página GenericErrorPage.aspx porque la configuración customErrors del archivo Web.config es "RemoteOnly" y ejecuta IIS localmente:

HTTP 404 error page

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:

Error log empty

Establecimiento de 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. La creación automática requiere código complejo de MSBuild y, dado que solo tiene que hacerlo la primera vez que implemente, los pasos siguientes describen cómo hacerlo manualmente. (Para obtener información sobre cómo crear esta parte del proceso de implementación, consulte Establecimiento de 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 Escritura de la columna Permitir.

    Permissions for ELMAH folder

    (Si no ve DefaultAppPool en la lista De nombres de usuario o grupo, 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.

ELMAH Error Log Page

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 mediante ACL del sistema de archivos en el sitio de IIS.net.