Tôi luôn nhận được statusCode=200
trên bài đăng ajax ở phía khách hàng, trong khi máy chủ trả lời với HttpStatusCode.Unauthorized
.Luôn thành công trên bài đăng ajax với HttpResponseMessage 401
mã điều khiển của tôi:
public class AccountApiController : ApiController
{
public HttpResponseMessage Login(HttpRequestMessage request, [FromBody]LoginViewModel loginModel)
{
return request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Unauthorized login.");
}
}
đang ajax của tôi:
$.ajax({
url: '/api/accountapi/login',
type: 'POST',
data: data
})
.done(function (object, status, xhr) {
alert("Success: " + xhr.status + " : " + xhr.statusText);
})
.always(function (object) {
$("#output").text(JSON.stringify(object, null, 4));
});
Kết quả: cảnh báo với văn bản Success: 200 : OK
và cửa sổ đầu ra với:
{
"Message": "Unauthorized login."
}
Vì vậy, tôi có thể nhận được văn bản thông báo lỗi, nhưng tôi cần phải nhận được HttpStatusCode để xử lý lỗi các câu lệnh. Làm ơn giúp tôi với.
Thông tin thêm về vấn đề này và giải pháp thanh lịch từ Brock Allen: http://brockallen.com/2013/10/27/using-cookie-authentication-middleware-with-web-api-and-401-response-codes/
Sử dụng các công cụ phát triển của bạn để xem các thuộc tính request/response. Trong chrome, hãy chuyển đến tab mạng, thực hiện yêu cầu, kiểm tra URL yêu cầu và Mã trạng thái. –
Tôi nhận được: 'Yêu cầu URL: http: // localhost: 31757/api/accountapi/login Phương thức Yêu cầu: POST Mã Trạng thái: 200 OK' và' X-Trả lời-JSON: {"trạng thái": 401, "tiêu đề ": {" vị trí ":" http: \/\/localhost: 31757 \/Tài khoản \/Đăng nhập? ReturnUrl =% 2Fapi% 2Faccountapi% 2Flogin "}}'. Câu trả lời JSON có vẻ đúng cách để đào bới :) – Valin