У меня есть следующий код:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static MyResponse myMethod(ParameterClass parameters)
{
MyResponse resp = new MyResponse();
resp.errors.Add("Some error message");
HttpContext.Current.Response.StatusCode = 400;
return resp;
}
, выполняющий это с jQuery.ajax с использованием URL MyPage.aspx / myMethod, этот вызов не возвращает мою полезную нагрузку из объекта MyResponse.Как только я переключаю код состояния на 200, возврат работает с помощью обратного вызова success в ajax, но я хочу вернуть пользовательские сообщения об ошибках с кодами состояния 4xx и 5xx, как заставить его работать.
Похоже, IIS являетсяпроблема, но что мне нужно сделать, чтобы по-прежнему разрешать возвращать объекты моего класса при ошибке?
Обновление 1: я также наблюдал за вкладкой сети в Chrome, IIS вообще не возвращает полезную нагрузкутак что jQuery не может быть проблемой.
Обновление 2: мой вызов jquery ajax
$.ajax({
url: 'MyPage.aspx/myMethod',
data: JSON.stringify({ parameters: request }),
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
...
},
error: function (data) {
// data.responseJSON is undefined and data.responseText contains only HTTP status code text, like "Bad Request" when code was 400.
}
});