“Se produjo una excepción al procesar su solicitud. Además, se produjo otra excepción al ejecutar la página de error personalizada ... "


104

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?


41
Hombre, tus errores arrojan errores. Eso es algo serio :)
Jack

Le sugiero que habilite el registro detallado de errores en el Portal de administración y revise los registros en el sitio FTP.
Jakub Konecki

¿Hay algo en su diseño que pueda ser el culpable?
drch

@drch No, nada ha cambiado en el diseño desde la última vez que funcionó.
Ilya Kogan

Respuestas:


213

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.

<system.web>
      <customErrors mode="Off" />

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 .


12
Establecer customErrors en "off" finalmente mostró algunas excepciones reales. Los estoy investigando ahora.
Ilya Kogan

1
Dado que da como resultado un error de IIS, también puede personalizarlos como una alternativa a la benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus

Mis errores personalizados están "Desactivados", pero sigo viendo el mensaje "Lo siento, se produjo un error al procesar su solicitud". error. ¿Podrías ayudarme aquí? @Ilya Kogan
GuiPab

1
+1 simplemente porque configurar customerror = off me permitió ver que el error se debió a que había utilizado una solución de sitio web como plantilla para otro sitio web y me había olvidado de borrar la carpeta bin, es decir, era un problema de duplicación.
Paul Zahra

7

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.


3

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:

<system.web>
    <customErrors mode="Off" defaultRedirect="~/Error.aspx" xdt:Transform="Replace"/>
</system.web>

1

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.


0

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.


-1

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.


2
¿Cómo entró Oracle en esta imagen?
Aamol
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.