ottengo sempre statusCode=200
su post ajax al lato client, mentre i server risponde con HttpStatusCode.Unauthorized
.sempre successo su ajax post con HttpResponseMessage 401
Il mio codice di controllo:
public class AccountApiController : ApiController
{
public HttpResponseMessage Login(HttpRequestMessage request, [FromBody]LoginViewModel loginModel)
{
return request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Unauthorized login.");
}
}
Il mio codice Ajax:
$.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));
});
Risultato: avviso con testo Success: 200 : OK
e finestra di output con:
{
"Message": "Unauthorized login."
}
Quindi, posso ottenere messaggio di errore di testo, ma ho bisogno di ottenere HttpStatusCode per gestire l'errore dichiarazioni. Aiutami per favore.
Maggiori informazioni su questo problema e soluzione elegante da Brock Allen: http://brockallen.com/2013/10/27/using-cookie-authentication-middleware-with-web-api-and-401-response-codes/
utilizzare gli strumenti di sviluppo per visualizzare le proprietà di richiesta/risposta. In Chrome vai alla scheda di rete, effettua la richiesta, controlla l'URL della richiesta e il codice di stato. –
Ho ottenuto: 'URL richiesta: http: // localhost: 31757/api/accountapi/login Metodo di richiesta: POST Codice di stato: 200 OK' e' X-Responded-JSON: {"stato": 401, "intestazioni ": {" location ":" http: \/\/localhost: 31757 \/account \/login ReturnUrl =% 2Fapi% 2Faccountapi% 2Flogin "}}'. Risposta JSON sembra il modo giusto per scavare :) – Valin