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()
?