RJ *_*han 5 c# asp.net-mvc angularjs
我有一个简单的AngularJS $ http块就像这样;
$http(req).then(function successCallback(response) {
alert(response);
}, function errorCallback(response) {
alert(response);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是当我的ASP.NET控制器返回HTTP错误代码时,JS errorCallback会收到一个像这样的对象;
{data: "", status: 304, config: Object, statusText: "Not Modified"}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我似乎无法在回调中填充数据属性.
如果我的控制器返回HTTP OK代码,则调用"success"回调,并且返回数据可用.但不是当它是一个错误......帮助!
控制器函数是一个WebAPI POST处理程序,看起来像;
[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
...<snip>...
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.NotModified,
Content = new JsonContent(JObject.FromObject(new
{
success = false,
message = "User not authorised to perform this action."
}))
};
}
Run Code Online (Sandbox Code Playgroud)
同样的结构,但有;
StatusCode = HttpStatusCode.OK
Run Code Online (Sandbox Code Playgroud)
成功收到JS中的成功回调.
因此,在查看了对我的问题的评论后,发现问题是由我选择的 Http 状态代码引起的。我正在回来
StatusCode = HttpStatusCode.NotModified,
Run Code Online (Sandbox Code Playgroud)
这段代码有特殊的含义,似乎“数据”blob 是故意被剥离的。
相反,如果我使用类似的代码
StatusCode = HttpStatusCode.Unauthorized,
Run Code Online (Sandbox Code Playgroud)
“数据”blob 按预期在 Angular 回调中填充。
该示例返回预期的错误数据;
[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
...<snip>...
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.Unauthorized,
Content = new JsonContent(JObject.FromObject(new
{
success = false,
message = "User not authorised to perform this action."
}))
};
}
Run Code Online (Sandbox Code Playgroud)