Implementación de una aplicación web de ASP.NET con SQL Server Compact mediante Visual Studio o Visual Web Developer: configuración de permisos de carpeta: 6 de 12

de Tom Dykstra

Descarga del proyecto de inicio

En esta serie de tutoriales se muestra cómo implementar (publicar) un proyecto de aplicación web de ASP.NET que incluye una base de datos de SQL Server Compact mediante Visual Studio 2012 RC o Visual Studio Express 2012 RC para la web. También puede usar Visual Studio 2010 si instala la actualización de publicación web. Para obtener una introducción a la serie, consulte el primer tutorial de la serie.

Para ver un tutorial que muestra las características de implementación introducidas después de la versión RC de Visual Studio 2012, muestra cómo implementar ediciones de SQL Server distintas de SQL Server Compact y muestra cómo implementar en Azure App Service Web Apps, consulte Implementación web de ASP.NET con Visual Studio.

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), la aplicación se ejecuta bajo su identidad. Es más probable que usted sea un administrador del equipo de desarrollo y tenga plena 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 similar a 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.

Prueba del registro de errores y los informes

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:

Error_page_Test

Ahora ejecute Elmah.axd para ver el informe de errores. Verá una página vacía del registro de errores porque Elmah no pudo crear un archivo XML en la carpeta Elmah:

Error_log_page_empty

Configuración del 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, en este tutorial solo se muestra cómo hacerlo manualmente. (Para obtener información sobre cómo crear esta parte del proceso de implementación, consulte Setting Folder Permissions on Web Publish (Configuración de permisos de carpeta en la publicación web) en el blog de Sayed Hashimi).

En el Explorador de Windows, 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.

Elmah_folder_Properties_Security_tab

(Si no ve DefaultAppPool en la lista de Nombres de usuario o grupo, probablemente usó algún método distinto al 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 Editar. En el cuadro de diálogo Permisos para Elmah, seleccione DefaultAppPool y, a continuación, active la casilla Escribir de la columna Permitir.

Permissions_for_Elmah_dialog_box

Haga clic en Aceptar en los dos cuadros de diálogo.

Repetición de la prueba del registro de errores y los informes

Pruebe volviendo a provocar un error 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_Test

También necesita permiso de escritura en la carpeta App_Data porque tiene archivos de base de datos de SQL Server Compact en esa carpeta y desea poder actualizar los datos de esas bases de datos. Sin embargo, en ese caso, no es necesario hacer nada más porque el proceso de implementación establece automáticamente el permiso de escritura en la carpeta App_Data.

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 un proveedor de hospedaje.

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 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 del grupo de aplicaciones y Contenido seguro en IIS a través de ACL del sistema de archivos en el sitio de IIS.net.