У меня есть jQuery, который выглядит так:
$.ajax({
type: "POST",
url: "/Customer/CancelSubscription/<%= Model.Customer.Id %>",
contentType: "application/json",
success: refreshTransactions,
error: function(xhr, ajaxOptions, thrownError) {
alert("Failed to cancel subscription! Message:" + xhr.statusText);
}
});
Если вызываемое действие вызывает исключение, оно в конечном итоге будет воспринято с помощью приложения Global.asax Application_Error, где у меня есть такой код:
var ex = Server.GetLastError();
if (Request.ContentType.Contains("application/json"))
{
Response.StatusCode = 500;
Response.StatusDescription = ex.Message;
Response.TrySkipIisCustomErrors = true;
}
else
{
// some other way of handling errors ...
}
Когда я выполняю script, который делает запись, Request.ContentType всегда является пустой строкой и поэтому не попадает в первый блок if. Есть ли какая-то другая ценность, которую я должен помещать в ajax "contentType"? Или есть ли другой способ сообщить asp.net, что тип содержимого должен быть "application/json"?
Разъяснение
Цель, которую я пытаюсь достичь, - передать сообщение об ошибке обратно в событие ошибки ajax. В настоящее время, несмотря на то, что блок IF блокируется, событие ошибки корректно выдает окно предупреждения, но сообщение "Не найдено".
Как вы можете видеть, я пытаюсь установить сообщение exeception в Response.StatusDescription, которое, как мне кажется, имеет значение xhr.statusText в ошибке ajax.