In my WebAPI class, an ApiController
, I make a call such as:
string myCustomMessage = .....;
throw new HttpResponseException(
new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = myCustomMessage });
When I call using AngularJS $resource
service, I do get 401 in the status field the response, in the catch block of the promise. The 401 matches HttpStatusCode.Unauthorized
, so all's well.
The problem, however, is that the data field of the response is empty (null). I don't get the myCustomMessage returned.
Now, if rather than throwing a HttpResponseException
exception, I just throw a regular Exception
with a message, that message does make it sway back to Angular.
I need to be able to do both: return a custom message from the server, as well as have the returned status code be whatever I want, in this case 401.
Anyone know how to make that work?
[edit]
Solution:
throw new HttpResponseException(
Request.CreateErrorResponse(HttpStatusCode.Unauthorized, myCustomMessage));
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…