Я бы не использовал 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. Можно ли это изменить, чтобы добиться того, чего я хочу?