У меня есть контроллер с рядом действий, которые возвращают jsonp.Моя проблема заключается в том, что с включенными пользовательскими ошибками мои jjery ajax-вызовы не «ошибаются» при серьезной ошибке сервера.Итак, мне нужно отключить пользовательское перенаправление ошибок только для контроллера или, если нужно, для каждого действия в этом контроллере.
Можно ли как-то отключить перенаправление, когда ошибка происходит только на техдействия, но все еще возвращают код ошибки клиенту, чтобы ajax мог обработать ошибку?
РЕДАКТИРОВАТЬ:
Я расширю с некоторым кодом.Во-первых, я использую конфигурацию для пользовательских ошибок.
<customErrors mode="RemoteOnly" defaultRedirect="~/Error/ServerError">
<error statusCode="403" redirect="~/Error/AccessDenied" />
<error statusCode="404" redirect="~/Error/NotFound" />
<error statusCode="500" redirect="~/Error/ServerError" />
<error statusCode="999" redirect="~/Error/ServerError" />
</customErrors>
Затем у меня есть свой собственный атрибут сообщения об исключениях.Этот атрибут применяется к базовому классу контроллера, который реализует IController.Все мои контроллеры наследуются от этого базового контроллера, так что все они имеют отчеты об ошибках, встроенные в любое время при возникновении ошибки сервера.
public sealed class HandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
RaiseErrorSignal(context.Exception);
}
private static void RaiseErrorSignal(Exception ex)
{
IExceptionHandler handler = Resolve();
handler.HandleError(ex.GetBaseException());
}
private static IExceptionHandler Resolve()
{
return ServiceLocator.Locate<IExceptionHandler>();
}
}
И у меня есть контроллер с такими методами
public JsonpResult DoSomething(string sessionId /*...more params...*/)
{
//Do work
return new JsonpResult() { Data = new { } };
}
Только на этом контроллере / этих действиях я хочу отключить перенаправление, чтобы код ошибки возвращался клиенту.Ошибка все еще должна быть выдана, но каким-то образом пользовательский режим ошибки должен быть изменен на Выкл только для этого запроса и только для продолжительности запроса.