Implementación web de ASP.NET con Visual Studio: configuración de permisos de carpeta

por Tom Dykstra

Descargar el 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, vea 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 con el Servidor de desarrollo de Visual Studio (Cassini) o IIS Express, la aplicación se ejecuta bajo su identidad. Lo más probable es que sea un administrador en el equipo de desarrollo y que tenga autoridad completa para realizar cualquier acción en cualquier archivo de cualquier carpeta. Pero cuando una aplicación se ejecuta en IIS, se ejecuta con 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 de las aplicaciones Web. En la aplicación contoso University, Elmah crea archivos XML en la carpeta Elmah con el fin de guardar los 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 escriben datos en una carpeta de su sitio.

Aviso: Si recibe un mensaje de error o algo no funciona a medida que avanza en el tutorial, asegúrese de consultar la Página de solución de problemas.

Probar el registro y los informes de errores

Para ver cómo la aplicación no funciona correctamente en IIS (aunque lo hizo cuando lo probó en Visual Studio), puede producirse un error que normalmente se registrará en Elmah y, a continuación, abrir el registro de errores 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/ContosoUniversityy, 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 el valor customErrors en el archivo Web. config es "RemoteOnly" y está ejecutando IIS localmente:

Página de error de 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 permisos de carpeta manualmente o puede convertirlo en una parte automática del proceso de implementación. Si lo hace, se requiere un código MSBuild complejo y, puesto que solo tiene que hacerlo la primera vez que implemente, los pasos siguientes le indicarán cómo hacerlo manualmente. (Para obtener información sobre cómo hacer esta parte del proceso de implementación, consulte configuración 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 propiedadesy, a continuación, seleccione la pestaña seguridad .

  2. Haga clic en Editar.

  3. En el cuadro de diálogo permisos de Elmah , seleccione DefaultAppPooly, a continuación, active la casilla escribir en la columna permitir .

    Permisos para la carpeta ELMAH

    (Si no ve DefaultAppPool en la lista nombres de grupos o usuarios , es probable que use 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. Vea los vínculos acerca de las identidades del grupo de aplicaciones al final de este tutorial). Haga clic en Aceptar en ambos cuadros de diálogo.

Reprobar el registro de errores y los informes

Realice una prueba de forma que se produzca un error de la misma manera (solicite una dirección URL incorrecta) y ejecute la página registro de errores . Esta vez el error aparece en la página.

Página de registro de errores de ELMAH

Resumen

Ya 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 su implementación en Azure.

Más información

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 los casos en los que la causa del problema no sea tan obvia; consulte solución de problemas de solicitudes con error 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, vea identidades del grupo de aplicaciones y contenido seguro en IIS a través de las ACL del sistema de archivos en el sitio de IIS.net.