Sunucu tarafında HttpStatusCode.Unauthorized
ile yanıt verirken, istemci tarafında ajax iletisinde her zaman statusCode=200
alırım. HttpResponseMessage 401 ile her zaman başarı HttpResponseMessage 401
public class AccountApiController : ApiController
{
public HttpResponseMessage Login(HttpRequestMessage request, [FromBody]LoginViewModel loginModel)
{
return request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Unauthorized login.");
}
}
Benim ajax kodu:
$.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));
});
Sonuç: metin ile uyarı Success: 200 : OK
ve çıkış penceresi ile: Yani
{
"Message": "Unauthorized login."
}
, alabilirim metin hata mesajı, ancak hatayı işlemek için HttpStatusCode almam gerekiyor ifadeleri. Bana yardım et lütfen. Brock Allen bu konuda ve zarif çözümü konusunda
fazla bilgi: http://brockallen.com/2013/10/27/using-cookie-authentication-middleware-with-web-api-and-401-response-codes/
istek/yanıt özelliklerini görüntülemek için geliştirici araçlarını kullanın. Chrome'da ağ sekmesine gidin, isteği yapın, İstek URL'sini ve Durum Kodunu inceleyin. –
Elimde: 'URL iste: http: // localhost: 31757/api/accountapi/login İstek Yöntemi: POST Durum Kodu: 200 Tamam 've' X-Yanıtlı JSON: {"durum": 401, "üstbilgiler ": {" konum ":" http: \/\/localhost:? 31757 \/Hesap \/Giriş ReturnUrl =% 2Fapi% 2Faccountapi% 2Flogin "}}'. JSON cevabı, kazmak için doğru bir yol gibi görünüyor :) – Valin