ASP.NET:当 http 状态为 4xx 时,Webmethos 不会 return 负载
ASP.NET: Webmethos does not return payload when http status is 4xx
我有以下代码:
[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 此调用不会 return 来自 MyResponse 对象的有效载荷。一旦我将状态代码切换为 200,return 就可以使用 ajax 中的成功回调进行工作,但我想 return 自定义带有 4xx 和 5xx 状态代码的错误消息,如何使其工作。
看来 IIS 是问题所在,但我需要做什么才能让 returning 我的 class 对象出错?
更新 1: 我也在 chrome 中查看了网络选项卡,IIS 根本没有 return 负载,所以 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.
}
});
好的,在另一个 Whosebug 中找到了它 post。
解决方案是将以下内容添加到 web.config:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
<clear/>
</httpErrors>
默认情况下 IIS 正在替换错误响应,这里属性 "existingResponse=PassThrough" 是关键。现在 responseJSON 和 responseText 填充了我通过 web 方法返回的自定义内容。
发现于
我有以下代码:
[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 此调用不会 return 来自 MyResponse 对象的有效载荷。一旦我将状态代码切换为 200,return 就可以使用 ajax 中的成功回调进行工作,但我想 return 自定义带有 4xx 和 5xx 状态代码的错误消息,如何使其工作。
看来 IIS 是问题所在,但我需要做什么才能让 returning 我的 class 对象出错?
更新 1: 我也在 chrome 中查看了网络选项卡,IIS 根本没有 return 负载,所以 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.
}
});
好的,在另一个 Whosebug 中找到了它 post。
解决方案是将以下内容添加到 web.config:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
<clear/>
</httpErrors>
默认情况下 IIS 正在替换错误响应,这里属性 "existingResponse=PassThrough" 是关键。现在 responseJSON 和 responseText 填充了我通过 web 方法返回的自定义内容。
发现于