ho bisogno di buttare HttpException
durante AjaxRequest
in Controller
e CustomFilterAttribute
Come buttare codice di stato personalizzato http durante Ajax richiesta (Post)
Quando butto Exception
in Controller
con 403
errore
[HttpPost]
[CustomAuthorize]
public ActionResult AjaxSelectBinding()
{
// 403 Error code
throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden");
}
nello script client I ottenere sempre il codice del risultato - 500
$.ajax({
type: 'POST',
url: '/Groups/AjaxSelectBinding',
success: function(data) {
},
error: function (xhr, ajaxOptions, thrownError) {
// HERE I GET ALWAYS 500 ERROR CODE
}
});
Come posso lanciare HttpException
nel mio FilterAttribute
e ottenere questo codice nella pagina client. Provo fare questo, ma ho 200
codice di stato:
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;
}
}
Quando provo gettare Exception
in FilterAttribute
ottengo 500
Codice di stato di nuovo
Thx. Non desidero reindirizzare l'errore 'HttpStatusCode.Unauthorized', perché nel client in questo caso ottengo la pagina di accesso e 200 (esito positivo). Voglio tradurre i miei codici personalizzati in errore ajax function-callback, ma il web server mi notifica sempre come 500 codice di stato. Nel controller posso rilevare 2 eccezioni (accesso e errore interno) e nel codice client ho bisogno di tradurlo. – Kronos