Tengo un filtro de excepción personalizado que estoy llamando en virtud de agregar un atributo [CustomExceptionFilter] a mi clase. Funciona como me gustaría, sin embargo, si el método de acción devuelve una vista parcial (a través de una solicitud ajax), la excepción (que básicamente es un redireccionamiento a una página no autorizada), está cargando la vista parcial con ese página. ¿Hay alguna manera en que pueda obligarlo a volver a cargar la URL 'principal'?asp.net mvc filtro de excepción personalizado para forzar el retorno de la vista completa, no parcial
Aquí es el código de la excepción personalizada filtrar
public class CustomExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception.GetType() == typeof(CustomSecurityException))
{
filterContext.ExceptionHandled = true;
RequestContext rc = new RequestContext(filterContext.HttpContext, filterContext.RouteData);
string url = RouteTable.Routes.GetVirtualPath(rc, new RouteValueDictionary(new { Controller = "NoAccess", action = "Index", message = filterContext.Exception.Message })).VirtualPath;
filterContext.HttpContext.Response.Redirect(url, true);
}
}
}
Esta es la respuesta correcta porque cuando hay un error ajax, no se golpea ni la excepción personalizada ni el código del controlador. – stuartdotnet