Nella mia classe WebAPI, un ApiController
, faccio una chiamata come ad esempio:Come si restituisce lo stato 401 da WebAPI a AngularJS e si include anche un messaggio personalizzato?
string myCustomMessage = .....;
throw new HttpResponseException(
new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = myCustomMessage });
Quando ho chiamata usando AngularJS $resource
servizio, io capisco 401 nel campo di stato della risposta, nel blocco catch della promessa . Il 401 corrisponde a HttpStatusCode.Unauthorized
, quindi va tutto bene.
Il problema, tuttavia, è che il campo dati della risposta è vuoto (null). Non viene restituito myCustomMessage.
Ora, se invece di lanciare un'eccezione HttpResponseException
, ho appena lanciato un normale Exception
con un messaggio, tale messaggio lo fa tornare ad Angular.
Ho bisogno di essere in grado di fare entrambe le cose: restituire un messaggio personalizzato dal server, così come hanno il codice di stato restituito essere quello che voglio, in questo caso 401.
Qualcuno sa come fare quel lavoro ?
[modifica] Soluzione:
throw new HttpResponseException(
Request.CreateErrorResponse(HttpStatusCode.Unauthorized, myCustomMessage));
Cosa succede se si utilizza semplicemente '$ http'? –
Karolis, sto bene usando semplicemente $ http. Lo farei se abbiamo stabilito che $ risorse non possono essere utilizzate per risolvere questo problema. È stato confermato? –