Exceção MVC HttpRequestValidationException
Estou codificando um aplicativo de Internet MVC 5 e tenho uma dúvida em relação aoHttpRequestValidationException
exceção.
Meu código anterior no meu controlador é o seguinte:
protected override void OnException(ExceptionContext filterContext)
{
// Make use of the exception later
this.Session["ErrorException"] = filterContext.Exception;
if (filterContext.Exception is HttpRequestValidationException)
{
TempData["UITitle"] = "Validation";
TempData["UIHeading"] = customErrorType;
TempData["UIMessage"] = filterContext.Exception.Message;
TempData["UIException"] = filterContext.Exception;
filterContext.ExceptionHandled = true;
}
else
{
TempData["UITitle"] = "Error";
TempData["UIHeading"] = customErrorType;
TempData["UIMessage"] = filterContext.Exception.Message;
TempData["UIException"] = filterContext.Exception;
}
filterContext.Result = this.RedirectToAction("Index", "Error");
base.OnException(filterContext);
}
Se uma exceção ocorreu, a exibição Índice no controlador de Erros exibiu esse erro. Agora escrevi o seguinte filtro global:
public class ExceptionFilterDisplayErrorView : IExceptionFilter
{
public virtual void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
RouteValueDictionary routeValueDictionary = new RouteValueDictionary();
routeValueDictionary.Add("controller", "Error");
routeValueDictionary.Add("action", "Index");
filterContext.Controller.TempData.Clear();
filterContext.Controller.TempData.Add("UITitle", "Error");
filterContext.Controller.TempData.Add("UIHeading", "Error");
filterContext.Controller.TempData.Add("UIMessage", filterContext.Exception.Message);
filterContext.Controller.TempData.Add("UIException", filterContext.Exception);
RedirectToRouteResult redirectToRouteResult = new RedirectToRouteResult(routeValueDictionary);
filterContext.Result = redirectToRouteResult;
}
}
O filtro acima funciona da mesma forma que o anteriorOnException
função, exceto agora, se umHttpRequestValidationException
ocorre uma exceção, a página de rastreamento de pilha padrão é mostrada, em vez da visualização do controlador de erro.
É possível exibir uma visualização de erro personalizada paraHttpRequestValidationException
exceções em um filtro de exceção?