tutorial net mvc entre diferencias asp asp.net-mvc-3 error-handling elmah

asp.net mvc 3 - net - La vista ''Error'' o su maestro no se encontrĂ³



web forms c# (5)

He pasado mucho tiempo tratando de encontrar una solución para esto en vano, así que pensé que vería si alguien aquí tiene una idea.

Estoy usando Elmah en mi aplicación ASP.NET MVC3 . Estoy usando exactamente el mismo código de la respuesta aceptada en el enlace anterior.

También tengo este código en mi Global.asax para mostrar páginas de error con la respuesta HTTP correcta:

/// <summary> /// The customErrors functionality provided by ASP.NET results in HTTP 302 redirects occurring which doesn''t accurately reflect what the real HTTP code of the response was. /// This method can be used to handle specific HTTP codes without an intermediate redirect. /// </summary> protected void Application_Error() { var exception = Server.GetLastError(); var httpException = exception as HttpException; Response.Clear(); Server.ClearError(); var routeData = new RouteData(); routeData.Values["controller"] = "Error"; routeData.Values["action"] = "Error500"; Response.StatusCode = 500; if (httpException != null) { Response.StatusCode = httpException.GetHttpCode(); Response.TrySkipIisCustomErrors = true; switch (Response.StatusCode) { case 403: routeData.Values["action"] = "Error403"; break; case 404: routeData.Values["action"] = "Error404"; routeData.Values["message"] = httpException.Message; break; case 500: routeData.Values["action"] = "Error500"; break; } } IController errorsController = new ErrorController(); var rc = new RequestContext(new HttpContextWrapper(Context), routeData); errorsController.Execute(rc); }

El problema ocurre cuando no estoy en mi máquina de desarrollo (local) (lo que inicialmente me hizo pensar que estaba relacionado con los customErrors ). Cuando se lanza una excepción, Elmah maneja el error y lo registra correctamente. También termino en la página de error correcta. Sin embargo, antes de terminar en la página de error correcta, puedo ver que se registra otra excepción intermedia:

The view ''Error'' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Articles/Error.aspx ~/Views/Articles/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Articles/Error.cshtml ~/Views/Articles/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

ASP.NET está tratando de cargar una página de error predeterminada a pesar de que estoy tratando de manejarlo. ¿Alguien tiene alguna idea sobre cómo prevenir esto?


En algún lugar, su sitio está intentando navegar a ~ / Error y no puede encontrarlo porque no existe.

Intenta eliminar o deshabilitar customErrors en su Web.config. Estoy dispuesto a estar configurado en el valor predeterminado de on y redirigir a ~ / Error

Si desea publicar su Web.config (omitiendo cualquier información confidencial) probablemente pueda ayudarlo. He tratado con problemas similares con Elmah recientemente.


Estaba teniendo el mismo problema, pero no estaba ejecutando base.OnException () en ninguna parte. Otra posible solución fue eliminar esto de <system.web> en mi web.config:

<customErrors mode="On" />


No llame a la base.OnException(context); método en su controlador de error personalizado que se deriva de HandleErrorAttribute . Ya no lo necesita porque ha implementado un manejo de error personalizado en Application_Error .


Si usa Elmah.MVC y desea usar páginas de error personalizadas, simplemente cambie el valor siguiente a verdadero en su Web.config:

<add key="elmah.mvc.disableHandleErrorFilter" value="true" />

Esto mantendrá el registro de Elmah habilitado pero evitará que intente redirigir a la página de error predeterminada.


Si usa Elmah.mvc, entonces le ayudará a cambiar esta configuración a verdadero:

<add key="elmah.mvc.disableHandler" value="true" /> <add key="elmah.mvc.disableHandleErrorFilter" value="true" />