Я бы не использовал Global.asax. Когда вы решите использовать ASPNETcore в будущих проектах, он больше не будет вам доступен. Однако защищенное переопределение void OnException (ExceptionContext filterContext) {} будет, и оно используется в вашем контроллере.

м приложении asp.net mvc я хотел бы показать пользователю сообщение об ошибке, которое использовалось для создания исключения. Исключение происходит в запросе ajax. Я попробовал это:

В файле Global.asax.cs у меня есть глобальный обработчик ошибок приложения:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = System.Web.HttpContext.Current.Server.GetLastError();

    // do something so that client side gets the value exception.Message
    // I have tried these, but no success
    HttpContext.Current.Response.StatusDescription = exception.Message;
    HttpContext.Current.Response.StatusCode = 1000;  // custom status code
}

В JavaScript у меня есть глобальный обработчик ajaxError:

$(document).ajaxError(function (xhr, props) {
    // show the message in the exception thrown on the server side
});

Я пытался получить сообщение об исключении в JavaScript, используяprops.statusText, props.responseText, но ни у одного из них не было сообщения об исключении.

Мой вопрос: Что я могу сделать вApplication_Error метод, чтобы я мог получить сообщение, содержащееся вexception.Message к глобальномуajaxError функционировать на стороне клиента? Обратите внимание, что я легко могу обработать исключение, которое возникает в любом конкретном действии, когда выполняется запрос ajax, но я хотел бы создать глобальный обработчик исключений, который позволит мне просто вызвать исключение с сообщением из любой части моего приложения, и сообщение об исключении показывается пользователю на стороне клиента.

я пыталсяэто, но это не решает мою проблему, потому что я хочу использовать глобальный jQueryajaxErrorвместо того, чтобы обрабатывать ошибку только в конкретном запросе ajax. Можно ли это изменить, чтобы добиться того, чего я хочу?

Ответы на вопрос(1)

Ваш ответ на вопрос