Estoy intentando publicar un sitio web MVC como un webrole de Azure.
Cuando lo ejecuto localmente, todo funciona bien.
Pero una vez que lo publico en Azure y navego a alguna acción MVC, aparece este error:
Error del servidor en la aplicación '/'.
Error de tiempo de ejecución
Descripción: se produjo una excepción al procesar su solicitud. Además, se produjo otra excepción al ejecutar la página de error personalizada para la primera excepción. La solicitud ha sido cancelada.
No entiendo cómo el controlador de errores puede encontrar una excepción, porque los errores se manejan de la manera predeterminada:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
Este es mi web.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
Este es Error.cshtml:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2>
Sorry, an error occurred while processing your request.
</h2>
¿Qué puede causar esta excepción y por qué no puedo reproducirla localmente?
asp.net-mvc
asp.net-mvc-4
web-config
server-error
Ilya Kogan
fuente
fuente
Respuestas:
Primero, configure customErrors = "Off" en web.config y vuelva a implementar para obtener un mensaje de error más detallado que nos ayudará a diagnosticar el problema. También puede RDP en la instancia y navegar al sitio desde IIS localmente para ver los errores.
Sin embargo, primero adivine: tiene algunas referencias (probablemente referencias de Azure SDK) que no están configuradas en Copiar local = verdadero. Por lo tanto, no se implementarán todas sus dependencias.
Ve primero al error detallado y actualiza tu pregunta.
ACTUALIZACIÓN: una segunda opción ahora disponible en VS2013 es la depuración remota de un servicio en la nube o una máquina virtual .
fuente
No estaba usando Azure, pero obtuve el mismo error localmente. El uso
<customErrors mode="Off" />
parecía no tener ningún efecto, pero la comprobación de los registros de la aplicación en el Visor de eventos reveló una advertencia de ASP.NET que contenía todos los detalles que necesitaba para resolver el problema.fuente
Si agrega esto a su archivo de transformación web.config, también puede configurar ciertas opciones de publicación para que la depuración esté habilitada o deshabilitada:
fuente
Al publicar en IIS, mediante Web Deploy, simplemente verifiqué las Opciones de publicación de archivos y ejecuté. ¡Ahora funciona! Después de esta implementación, no es necesario marcar las casillas de verificación. No creo que esto pueda ser una solución para todos, pero es lo único que necesitaba hacer para resolver mi problema. Buena suerte.
fuente
Tuve este problema solo con
redirectMode="ResponseRewrite"
(redirectMode="ResponseRedirect"
funcionó bien) y ninguna de las soluciones anteriores me ayudó a resolver el problema. Sin embargo, una vez que cambié el "Modo de canalización administrado" del grupo de aplicaciones del servidor de "Clásico" a "Integrado", la página de error personalizada apareció como se esperaba.fuente
En su lugar, puede usar Oracle.ManagedDataAccess.dll (descargar desde Oracle), incluir ese dll en su directorio bin del proyecto, agregar una referencia a ese dll en el proyecto. En código, "utilizando Oracle.MangedDataAccess.Client". Implemente el proyecto en el servidor como de costumbre. No es necesario instalar Oracle Client en el servidor. No es necesario agregar información de ensamblaje en web.config.
fuente