try page net mvc log errors error custom create catch asp all c# asp.net-mvc razor error-handling asp.net-mvc-5

c# - page - ¿Cómo se muestra el mensaje de excepción en la vista compartida Error.cshtml?



onexception mvc (1)

Anular el filtro:

// in your app_start folder public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new ErrorFilter()); filters.Add(new HandleErrorAttribute()); filters.Add(new SessionFilter()); } } // in your filters folder (create this) public class ErrorFilter : System.Web.Mvc.HandleErrorAttribute { public override void OnException(System.Web.Mvc.ExceptionContext filterContext) { var exception = filterContext.Exception; string controller = ""; string action = ""; controller = filterContext.RouteData.Values["controller"].ToString(); action = filterContext.RouteData.Values["action"].ToString(); if (filterContext.ExceptionHandled) { return; } else { //Determine the return type of the action string actionName = filterContext.RouteData.Values["action"].ToString(); Type controllerType = filterContext.Controller.GetType(); var method = controllerType.GetMethod(actionName); var returnType = method.ReturnType; //If the action that generated the exception returns JSON if (returnType.Equals(typeof(JsonResult))) { filterContext.Result = new JsonResult() { Data = "DATA not returned" }; } //If the action that generated the exception returns a view if (returnType.Equals(typeof(ActionResult)) || (returnType).IsSubclassOf(typeof(ActionResult))) { filterContext.Result = new ViewResult { ViewName = "Error" }; } } //Make sure that we mark the exception as handled filterContext.ExceptionHandled = true; } }

Declare el modelo en la parte superior de la vista de ''error'':

@model System.Web.Mvc.HandleErrorInfo

A continuación, use en la página como sigue:

@if (Model != null) { <div> @Model.Exception.Message <br /> @Model.ControllerName </div> }

Espero que esto ayude.

Si comienzo con un nuevo proyecto de MVC 5, en la configuración web.config customErrors mode = "on" permite que la vista compartida ''Error.cshtml'' se muestre cuando fuerce (levante) una excepción, pero solo muestra el siguiente texto ... .

Error.

Se produjo un error al procesar su solicitud.

¿Cómo paso información a esta vista para mostrar información más relevante, como qué error ocurrió? ¿Puedo usar esta vista si uso el método Global.asax ...

protected void Application_Error()

?