tengo que tirar HttpException
durante AjaxRequest
en Controller
y CustomFilterAttribute
Cómo tirar código de estado HTTP personalizado durante el Ajax petición (Post)
Cuando lanzo Exception
en Controller
con 403
error
[HttpPost]
[CustomAuthorize]
public ActionResult AjaxSelectBinding()
{
// 403 Error code
throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden");
}
En el script de cliente I obtener siempre el código de resultado - 500
$.ajax({
type: 'POST',
url: '/Groups/AjaxSelectBinding',
success: function(data) {
},
error: function (xhr, ajaxOptions, thrownError) {
// HERE I GET ALWAYS 500 ERROR CODE
}
});
¿Cómo puedo lanzar HttpException
en mi FilterAttribute
y obtener este código en la página del cliente. Trato de hacer esto, pero me da 200
código de estado:
public class CustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
SharedControllerBase ctrl = (SharedControllerBase)filterContext.Controller;
if (!ctrl.User.Identity.IsAuthenticated &&
filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
}
Cuando intento lanzar Exception
en FilterAttribute
me sale 500
Código de estado de nuevo
Thx. No quiero redirigir el error 'HttpStatusCode.Unauthorized', porque en el cliente, en este caso, obtengo la página de inicio de sesión y el resultado de 200 (éxito). Quiero traducir mis códigos personalizados en error ajax function-callback, pero el servidor web siempre me notifica como 500 código de estado. En el controlador puedo capturar 2 excepciones (acceso y error interno) y en el código del cliente, necesito traducirlo. – Kronos