Implementación web de ASP.NET mediante Visual Studio: Solución de problemas

De Tom Dykstra

Descarga del 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 de tutoriales, vea el primer tutorial de la serie.

En esta página, se describen algunos problemas comunes que pueden surgir al implementar una aplicación web de ASP.NET mediante Visual Studio. Para cada uno, se proporcionan una o varias causas posibles y las soluciones correspondientes.

Los escenarios que se muestran se aplican a los proveedores de hospedaje de Azure y de terceros. Para obtener más información sobre cómo solucionar problemas de aplicaciones web en Azure App Service, consulte los siguientes recursos:

Error del servidor en la aplicación '/': la configuración de error personalizada actual impide que los detalles del error se vean de forma remota

Escenario

Después de implementar un sitio en un host remoto, recibe un mensaje de error que menciona la configuración customErrors en el archivo Web.config, pero no indica la causa real del error:

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

Causa posible y solución

De forma predeterminada, ASP.NET muestra información detallada de errores solo cuando la aplicación web se ejecuta en el equipo local. Por lo general, usted no debería mostrar información detallada de errores cuando la aplicación web está disponible públicamente a través de Internet, ya que es posible que los hackers puedan usar esta información para encontrar vulnerabilidades en la aplicación. Sin embargo, al implementar un sitio o actualizaciones en un sitio, a veces algo sale mal y necesita obtener el mensaje de error real.

Para permitir que la aplicación muestre mensajes de error detallados cuando se ejecuta en el host remoto, edite el archivo Web.config para desactivar el modo customErrors, vuelva a implementar la aplicación y, luego, vuelva a ejecutarla:

  1. Si el archivo Web.config de la aplicación tiene un elemento customErrors en el elemento system.web, cambie el atributo de modo a "off" (desactivado). Si no lo tiene, agregue un elemento customErrors en el elemento system.web con el atributo de modo establecido en "off", como se muestra en el ejemplo siguiente:

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. Implemente la aplicación.

  3. Ejecute la aplicación y repita lo que haya hecho anteriormente cuando se produjo el error. Ahora puede ver cuál es el mensaje de error real.

  4. Cuando haya resuelto el error, restaure la configuración customErrors original y vuelva a implementar la aplicación.

No se puede crear o hacer una instantánea "ContosoUniversity" cuando ese archivo ya existe.

Escenario

Al intentar ejecutar un proyecto en Visual Studio, ve una página de error con un mensaje como el ejemplo siguiente:

Error del servidor en la aplicación '/' No se puede crear o hacer una instantánea "ContosoUniversity" cuando ese archivo ya existe.

Causa posible y solución

Espere un minuto y actualice el explorador, o vuelva a compilar el sitio e intente ejecutarlo de nuevo.

El acceso se deniega en una página web que usa SQL Server Compact

Escenario

Al implementar un sitio que usa SQL Server Compact y ejecuta una página en el sitio implementado que tiene acceso a la base de datos, ve el siguiente mensaje de error:

Se denegó el acceso. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))

Causa posible y solución

La cuenta NETWORK SERVICE del servidor debe poder leer los archivos binarios nativos de SQL Service Compact que se encuentran en la carpeta bin\amd64 o bin\x86, pero no tiene permisos de lectura para esas carpetas. Establezca el permiso de lectura para NETWORK SERVICE en la carpeta bin y asegúrese de ampliar los permisos a las subcarpetas.

No se puede leer el archivo de configuración debido a permisos insuficientes

Escenario

Al hacer clic en el botón Publicar de Visual Studio para implementar una aplicación en IIS en el equipo local, se produce un error en la publicación y la ventana Salida muestra un mensaje de error similar al siguiente:

Error al leer el archivo de configuración de IIS "MACHINE/REDIRECTION". La identidad que realiza esta operación fue... Error: No se puede leer el archivo de configuración debido a permisos insuficientes.

Causa posible y solución

Para usar la publicación con un solo clic en IIS en el equipo local, debe ejecutar Visual Studio con permisos de administrador. Cierre Visual Studio y reinícielo con permisos de administrador.

No se pudo conectar al equipo de destino... Uso del proceso especificado

Escenario

Al hacer clic en el botón Publicar de Visual Studio para implementar una aplicación, se produce un error en la publicación y la ventana Salida muestra un mensaje de error similar al siguiente:

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

Causa posible y solución

Un servidor proxy interrumpe la comunicación con el servidor de destino. En el panel de control de Windows o en Internet Explorer, seleccione Opciones de Internet y seleccione la pestaña Conexiones. En el cuadro de diálogo Propiedades de Internet, haga clic en Configuración de LAN. En el cuadro de diálogo Configuración de red de área local (LAN), desactive la casilla Detectar automáticamente la configuración. A continuación, vuelva a hacer clic en el botón "publicar".

Si el problema persiste, comuníquese con el administrador del sistema para determinar lo que se puede hacer con la configuración de proxy o firewall. El problema se produce porque Web Deploy usa un puerto no estándar para la implementación del servicio de administración web (8172); para otras conexiones, Web Deploy usa el puerto 80. Cuando se implementa en un proveedor de hospedaje de terceros, se suele usar el servicio de administración web.

El grupo de aplicaciones predeterminado de .NET 4.0 no existe

Escenario

Al implementar una aplicación que requiera .NET Framework 4, ve el siguiente mensaje de error:

El grupo de aplicaciones de .NET 4.0 predeterminado no existe o no se pudo agregar la aplicación. Compruebe que ASP.NET 4.0 está instalado en esta máquina.

Causa posible y solución

ASP.NET 4 no está instalado en IIS. Si el servidor en el que va a realizar la implementación es el equipo de desarrollo y tiene Visual Studio 2010 instalado en él, entonces ASP.NET 4 ya está instalado en el equipo, pero es posible que no esté instalado en IIS. En el servidor en el que va a realizar la implementación, abra un símbolo del sistema con privilegios elevados e instale ASP.NET 4 en IIS ejecutando los siguientes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

También es posible que tenga que establecer manualmente la versión de .NET Framework del grupo de aplicaciones predeterminado. Para más información, consulte el tutorial Implementación en IIS como entorno de prueba en esta serie.

El formato de la cadena de inicialización no es conforme a la especificación que comienza en el índice 0.

Escenario

Después de implementar una aplicación mediante publicación con un solo clic, al ejecutar una página que tenga acceso a la base de datos, recibirá el siguiente mensaje de error:

El formato de la cadena de inicialización no es conforme a la especificación que comienza en el índice 0.

Causa posible y solución

Abra el archivo Web.config en el sitio implementado y compruebe si los valores de la cadena de conexión comienzan por $(ReplaceableToken_, como en el ejemplo siguiente:

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Si las cadenas de conexión tienen un aspecto similar a este ejemplo, edite el archivo del proyecto y agregue la siguiente propiedad al elemento PropertyGroup para todas las configuraciones de compilación:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

A continuación, vuelva a implementar la aplicación.

HTTP 500: error interno del servidor

Escenario

Al ejecutar el sitio implementado, ve el siguiente mensaje de error sin información específica que indique la causa del error:

Error HTTP 500: error interno del servidor.

Causa posible y solución

Hay muchas causas de errores 500, pero una posible causa, si sigue estos tutoriales, es que coloca un elemento XML en un lugar incorrecto en uno de los archivos de transformación Web.config. Por ejemplo, recibirá este error si coloca la transformación que inserta un elemento de <ubicación> en <system.web> en lugar de directamente en la <configuración>. Puede usar la característica de vista previa de transformación de Web.config para comprobar que las transformaciones funcionan según lo previsto. Si encuentra una transformación codificada incorrectamente, la solución es corregir el archivo de transformación y volver a implementarlo. Si sigue sin encontrar el error, pruebe a comentar transformaciones y volver a implementar para ver cuál está causando el error 500.

HTTP 500.21: error interno del servidor

Escenario

Al ejecutar el sitio implementado, ve el siguiente mensaje de error:

Error HTTP 500.21: error interno del servidor. El controlador "PageHandlerFactory-Integrated" tiene un módulo incorrecto "ManagedPipelineHandler" en su lista de módulos.

Causa posible y solución

El sitio que ha implementado tiene destinos ASP.NET 4, pero ASP.NET 4 no está registrado en IIS en el servidor. En el servidor, abra un símbolo del sistema con privilegios elevados y registre ASP.NET 4 ejecutando los siguientes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

También es posible que tenga que establecer manualmente la versión de .NET Framework del grupo de aplicaciones predeterminado. Para más información, consulte el tutorial Implementación en IIS como entorno de prueba en esta serie.

Error de inicio de sesión al abrir la base de datos de SQL Server Express en App_Data

Escenario

Ha actualizado la cadena de conexión del archivo Web.config para que apunte a una base de datos de SQL Server Express como un archivo .mdf en la carpeta App_Data y la primera vez que ejecuta la aplicación ve el siguiente mensaje de error:

System.Data.SqlClient.SqlException: no se puede abrir la base de datos "DatabaseName" solicitada por el inicio de sesión. Error de inicio de sesión.

Causa posible y solución

El nombre del archivo .mdf no puede coincidir con el nombre de ninguna base de datos de SQL Server Express que haya existido en el equipo, incluso si ha eliminado el archivo .mdf de la base de datos existente anteriormente. Cambie el nombre del archivo .mdf por un nombre que nunca se haya usado como nombre de base de datos y cambie el archivo Web.config de modo que use el nuevo nombre. Como alternativa, puede usar SQL Server Management Studio Express para eliminar bases de datos de SQL Server Express que hayan existido anteriormente.

No se puede comprobar la compatibilidad del modelo

Escenario

Ha actualizado la cadena de conexión del archivo Web.config para que apunte a una nueva base de datos de SQL Server Express y la primera vez que ejecuta la aplicación ve el siguiente mensaje de error:

No se puede comprobar la compatibilidad del modelo porque la base de datos no contiene metadatos del modelo. Asegúrese de que IncludeMetadataConvention se ha agregado a las convenciones DbModelBuilder.

Causa posible y solución

Si el nombre de la base de datos que ha colocado en el archivo Web.config se ha usado antes en el equipo, es posible que ya exista una base de datos con algunas tablas en él. Seleccione un nuevo nombre que no se haya usado en el equipo antes y cambie el archivo Web.config para que pueda usar este nuevo nombre de base de datos. O bien, puede usar SQL Server Express Utility o SQL Server Management Studio Express para eliminar la base de datos existente.

Error de SQL cuando un script intenta crear usuarios o roles

Escenario

Está usando la implementación de base de datos configurada en la pestaña Paquete/Publicación de SQL, los scripts SQL que se ejecutan durante la implementación incluyen los comandos Crear usuario o Crear rol, y se produce un error en la ejecución de scripts cuando se ejecutan esos comandos. Es posible que vea mensajes más detallados, como los siguientes:

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

Si este error se produce cuando ha configurado la implementación de la base de datos en el asistente para Publicar sitio web en lugar de la pestaña Paquete/Publicar SQL, cree un subproceso en el foro Configuración e implementación y la solución se agregará a esta página de solución de problemas.

Causa posible y solución

La cuenta de usuario que usa para realizar la implementación no tiene permiso para crear usuarios o roles. Por ejemplo, la empresa de hospedaje podría asignar los roles de db_datareader, db_datawriter y db_ddladmin a la cuenta de usuario que configura. Estos son suficientes para crear la mayoría de los objetos de base de datos, pero no para crear usuarios o roles. Una manera de evitar el error es excluir usuarios y roles de la implementación de la base de datos. Para ello, edite el elemento PreSource para el script generado automáticamente de la base de datos para que incluya los atributos siguientes:

CopyAllUsers=false, CopyAllRoles=false

Para obtener información sobre cómo editar el elemento PreSource en el archivo de proyecto, consulte Cómo: Editar los valores de implementación de SQL en el archivo de proyecto. Si los usuarios o roles de la base de datos de desarrollo deben estar en la base de datos de destino, comuníquese con el proveedor de hospedaje para obtener ayuda.

Error de tiempo de espera de SQL Server al ejecutar scripts personalizados durante la implementación

Escenario

Ha especificado scripts SQL personalizados para ejecutarse durante la implementación y, cuando Web Deploy los ejecuta, se agota el tiempo de espera.

Causa posible y solución

La ejecución de varios scripts que tienen diferentes modos de transacción puede provocar errores de tiempo de espera. De forma predeterminada, los scripts generados automáticamente se ejecutan en una transacción, pero los scripts personalizados no lo hacen. Si selecciona la opción Extraer datos y/o esquema de una base de datos existente en la pestaña Empaquetar/publicar SQL y, si agrega un script SQL personalizado, debe cambiar la configuración de transacción en algunos scripts para que todos los scripts usen la misma configuración de transacción. Para más información, consulte Cómo: Implementar una base de datos con un proyecto de aplicación web.

Si ha configurado las opciones de transacción para que todo sea lo mismo, pero sigue recibiendo este error, una posible solución alternativa es ejecutar los scripts por separado. En la cuadrícula Scripts de base de datos de la pestaña Empaquetar/publicar de SQL, desactive la casilla Incluir del script que provoca el error de tiempo de espera y, después, publique el proyecto. Después, vuelva a la cuadrícula Scripts de base de datos, active la casilla Incluir del script y desactive las casillas Incluir de los demás scripts. Luego, vuelva a publicar el proyecto. Esta vez, cuando se publica, solo se ejecuta el script personalizado seleccionado.

Los datos de flujo del manifiesto del sitio aún no están disponibles

Escenario

Al instalar un paquete mediante el archivo deploy.cmd con la opción t (prueba), ve el siguiente mensaje de error:

Error: Los datos de secuencia de "sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript" aún no están disponibles.

Causa posible y solución

El mensaje de error significa que el comando no puede generar un informe de prueba. Sin embargo, el comando puede ejecutarse si usa la opción y (instalación real). El mensaje solo indica que hay un problema al ejecutar el comando en modo de prueba.

Esta aplicación requiere ManagedRuntimeVersion v4.0

Escenario

Al intentar realizar la implementación, ve el siguiente mensaje de error:

El grupo de aplicaciones que está intentando usar tiene la propiedad "managedRuntimeVersion" establecida en "v2.0". Esta aplicación requiere "v4.0".

Causa posible y solución

ASP.NET 4 no está instalado en IIS. Si el servidor en el que va a realizar la implementación es el equipo de desarrollo y tiene Visual Studio 2010 instalado en él, entonces ASP.NET 4 ya está instalado en el equipo, pero es posible que no esté instalado en IIS. En el servidor en el que va a realizar la implementación, abra un símbolo del sistema con privilegios elevados e instale ASP.NET 4 en IIS ejecutando los siguientes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

No se puede convertir Microsoft.Web.Deployment.DeploymentProviderOptions

Escenario

Al implementar un paquete, ve el siguiente mensaje de error:

No se puede convertir el objeto de tipo "Microsoft.Web.Deployment.DeploymentProviderOptions" a "Microsoft.Web.Deployment.DeploymentProviderOptions".

Causa posible y solución

Está intentando realizar la implementación desde el Administrador de IIS mediante la interfaz de usuario de Web Deploy 1.1 en un servidor que tenga Web Deploy 2.0 instalado. Si usa la herramienta de administración remota de IIS para implementar mediante la importación de un paquete, active el cuadro de diálogo Nuevas características disponibles al establecer la conexión. (Este cuadro de diálogo solo se puede mostrar una vez cuando se establece la conexión por primera vez. Para borrar la conexión y empezar de nuevo, cierre el Administrador de IIS y vuelva a iniciarlo escribiendo inetmgr /reset en el símbolo del sistema). Si una de las características enumeradas es la interfaz de usuario de Web Deploy y tiene un número de versión inferior a 8, es posible que el servidor que va a implementar tenga instaladas las versiones 1.1 y 2.0 de Web Deploy. Para implementar desde un cliente que tenga instalada la versión 2.0, el servidor solo debe tener instalado Web Deploy 2.0. Tendrá que comunicarse con el proveedor de hospedaje para resolver este problema.

No se pueden cargar los componentes nativos de SQL Server Compact

Escenario

Al ejecutar el sitio implementado, ve el siguiente mensaje de error:

No se pueden cargar los componentes nativos de SQL Server Compact correspondientes al proveedor de ADO.NET de la versión 8482. Instale la versión correcta de SQL Server Compact. Consulte el artículo de KB 974247 para obtener más información.

Causa posible y solución

El sitio implementado no tiene subcarpetas amd64 y x86 con los ensamblados nativos en ellos en la carpeta bin de la aplicación. En un equipo con SQL Server Compact instalado, los ensamblados nativos se encuentran en C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private. La mejor manera de obtener los archivos correctos en las carpetas correctas de un proyecto de Visual Studio es instalar el paquete SqlServerCompact de NuGet. La instalación del paquete agrega un script posterior a la compilación para copiar los ensamblados nativos en amd64 y x86. Sin embargo, para que estos se implementen, debe incluirlos manualmente en el proyecto. Para más información, consulte el tutorial Implementación de SQL Server Compact.

Error "Ruta de acceso no válida" después de implementar una aplicación de Entity Framework Code First

Escenario

Implemente una aplicación que use migraciones de Entity Framework Code First y un DBMS, como SQL Server Compact, que almacena su base de datos en un archivo de la carpeta App_Data. Tiene migraciones de Code First configuradas para crear la base de datos después de la primera implementación. Al ejecutar la aplicación, recibe un mensaje de error como el ejemplo siguiente:

La ruta de acceso no es válida. Compruebe el directorio de la base de datos. [Ruta de acceso = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

Causa posible y solución

Code First está intentando crear la base de datos, pero la carpeta App_Data no existe. O bien, no tenía ningún archivo en la carpeta App_Data cuando ha implementado o seleccionado Excluir App_Data en la pestaña Empaquetar/publicar web de la ventana Propiedades del proyecto. El proceso de implementación no creará una carpeta en el servidor si no hay ningún archivo en la carpeta que copiar en el servidor. Si ya tenía la base de datos configurada en el sitio, el proceso de implementación eliminará los archivos y la carpeta App_Data si ha seleccionado Quitar archivos adicionales en el destino en el perfil de publicación. Para solucionar el problema, coloque un archivo de marcador de posición como un archivo .txt en la carpeta App_Data, asegúrese de que no tiene App_Data seleccionada y vuelva a implementarlo.

"No se puede utilizar un objeto COM que se ha separado de su contenedor RCW subyacente".

Escenario

Ha usado correctamente la publicación con un solo clic para implementar la aplicación, pero después empieza a recibir este error:

No se pudo realizar la tarea de implementación web. (No se pudo completar la solicitud en la dirección URL del agente remoto "<https://serverurl.com/msdeploy.axd?site=sitename>").
No se pudo completar la solicitud en la dirección URL del agente remoto "<https://url/msdeploy.axd?site=sitename>".
Se ha anulado la solicitud: Se ha cancelado la solicitud.
No se puede utilizar un objeto COM que se ha separado de su contenedor RCW subyacente.

Causa posible y solución

Por lo general, basta con cerrar y reiniciar Visual Studio para resolver este error.

Se produce un error en la implementación porque las credenciales de usuario usadas para la publicación no tienen la entidad setACL

Escenario

La publicación produce un error que indica que no tiene autoridad para establecer permisos de carpeta (la cuenta de usuario que usa no tiene la entidad setACL).

Causa posible y solución

De forma predeterminada, Visual Studio establece permisos de lectura en la carpeta raíz del sitio y permisos de escritura en la carpeta App_Data. Si sabe que los permisos predeterminados en las carpetas del sitio son correctos y no es necesario establecerlos, deshabilite este comportamiento. Para hacerlo, agregue IncludeSetACLProviderOn Destination<>False</IncludeSetACLProviderOnDestination> al archivo de perfil de publicación (para afectar a un único perfil) o al archivo wpp.targets (para afectar a todos los perfiles). Para obtener información sobre cómo editar estos archivos, consulte Cómo: Editar la configuración de implementación en archivos de perfil (.pubxml).

Errores de acceso denegado cuando la aplicación intenta escribir en una carpeta de aplicación

Escenario

La aplicación produce errores cuando intenta crear o editar un archivo en una de las carpetas de la aplicación, ya que no tiene autoridad de escritura para esa carpeta.

Causa posible y solución

De forma predeterminada, Visual Studio establece permisos de lectura en la carpeta raíz del sitio y permisos de escritura en la carpeta App_Data. Si la aplicación necesita acceso de escritura a una subcarpeta, puede establecer permisos para esa carpeta, como se muestra en los tutoriales Configuración de permisos de carpeta e Implementación en el entorno de producción de esta serie. Si la aplicación necesita acceso de escritura a la carpeta raíz del sitio, debe impedir que establezca el acceso de solo lectura en la carpeta raíz. Para hacerlo, agregue <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> al archivo de perfil de publicación (para afectar a un único perfil) o al archivo wpp.targets (para afectar a todos los perfiles). Para obtener información sobre cómo editar estos archivos, consulte Cómo: Editar la configuración de implementación en archivos de perfil (.pubxml).

Error de configuración: el atributo targetFramework hace referencia a una versión posterior a la versión instalada de .NET Framework

Escenario

Ha publicado correctamente un proyecto web que tiene como destino ASP.NET 4.5, pero, al ejecutar la aplicación (con el modo customErrors establecido en "off" (desactivado) en el archivo Web.config), obtiene el siguiente error:

El atributo "targetFramework" del elemento <compilation> del archivo Web.config solo se usa para dirigirse a la versión 4.0 y posteriores de .NET Framework (por ejemplo, "<compilation targetFramework="4.0">"). Actualmente, el atributo "targetFramework" hace referencia a una versión posterior a la versión instalada de .NET Framework. Especifique una versión de destino válida de .NET Framework o instale la versión necesaria de .NET Framework.

El cuadro Error de origen de la página de error resalta la siguiente línea de Web.config como causa del error:

<compilation targetFramework="4.5" />

Causa posible y solución

El servidor no admite ASP.NET 4.5. Comuníquese con el proveedor de hospedaje para determinar cuándo (y si es que) se puede agregar compatibilidad con ASP.NET 4.5. Si la actualización del servidor no es una opción, debe implementar un proyecto web que tenga como destino ASP.NET 4 o versiones anteriores en su lugar.

Si implementa un proyecto web de ASP.NET 4 o anterior en el mismo destino, active la casilla Quitar archivos adicionales en el destino en la pestaña Configuración del asistente para Publicar sitio web. Si no selecciona Quitar archivos adicionales en el destino, seguirá recibiendo la página Error de configuración.

Las ventanas Propiedades del proyecto incluyen una lista desplegable Plataforma de destino, pero no se puede resolver este problema simplemente cambiando de .NET Framework 4.5 a .NET Framework 4. Si cambia la plataforma de destino a una versión de marco anterior, el proyecto seguirá teniendo referencias a los ensamblados de la versión del marco posterior y no se ejecutará. Tiene que cambiar manualmente esas referencias o crear un proyecto que tenga como destino .NET Framework 4 o versiones anteriores. Para obtener más información, consulte .NET Framework como destino para sitios web.

Errores de confianza media

Escenario

Al ejecutar la aplicación en producción, obtiene un error relacionado con la confianza media.

Causa posible y solución

Muchos proveedores de hospedaje de terceros ejecutan su sitio web en confianza media, lo que significa que hay algunas cosas que no se pueden hacer. Por ejemplo, el código de aplicación no puede acceder al Registro de Windows y no puede leer ni escribir archivos que están fuera de la jerarquía de carpetas de la aplicación. De forma predeterminada, la aplicación se ejecuta en plena confianza en el equipo local, lo que significa que es posible que la aplicación pueda hacer cosas que generarían errores al implementarla en producción.

Puede configurar la aplicación para que se ejecute en confianza media en el entorno de IIS local para solucionar problemas. Para ello, abra el archivo Web.config de la aplicación y agregue un elemento trust en el elemento system.web, como se muestra en este ejemplo.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

La aplicación ahora se ejecutará en confianza media en IIS incluso en el equipo local.

No lo haga si va a realizar la implementación en Azure App Service, ya que Azure no requiere confianza media. En el momento en que este tutorial se está escribiendo en febrero de 2012, el uso de este método para que la aplicación se ejecute en confianza media provocará un error en Azure.

Si usa migraciones de Entity Framework Code First y va a implementar en un proveedor de hospedaje que ejecuta la aplicación en confianza media, asegúrese de que tiene instalada la versión 5.0 o posterior. En Entity Framework (versión 4.3), las migraciones requieren plena confianza para actualizar el esquema de la base de datos.

Error "No encontrado" HTTP 404.17

Escenario

Al ejecutar el sitio implementado en el equipo de desarrollo en IIS, ve el siguiente mensaje de error que indica que el servidor no puede procesar Default.aspx:

Error HTTP 404.17: No encontrado

El contenido solicitado parece ser script y el controlador de archivos estático no lo atenderá.

Causa posible y solución

Es posible que ASP.NET 4.5 no esté instalado en el equipo. Consulte los pasos del tutorial Implementación en IIS como entorno de prueba en esta serie que explica cómo instalar ASP.NET 4.5.