W mojej klasie WebAPI, ApiController
, nawiązywać połączenia, takie jak:W jaki sposób zwracasz status 401 z WebAPI do AngularJS, a także podajesz niestandardową wiadomość?
string myCustomMessage = .....;
throw new HttpResponseException(
new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = myCustomMessage });
Kiedy połączenie przy użyciu angularjs $resource
usługę, mam dostać 401 w polu statusu odpowiedzi, w bloku catch obietnicy . The 401 mecze HttpStatusCode.Unauthorized
, więc wszystko dobrze.
Problem polega jednak na tym, że pole danych odpowiedzi jest puste (null). Nie otrzymuję zwrotu myCustomMessage.
Teraz, jeśli zamiast rzucać wyjątek HttpResponseException
, po prostu wyrzucam zwykłego Exception
z wiadomością, ta wiadomość sprawi, że powróci do Angular.
muszę być w stanie to zrobić zarówno: powrót niestandardowy komunikat z serwera, jak również mają zwrócony kod stanu jest to, co chcę, w tym przypadku 401.
Każdy wie, jak sprawić, że praca ?
[Edycja] Rozwiązanie:
throw new HttpResponseException(
Request.CreateErrorResponse(HttpStatusCode.Unauthorized, myCustomMessage));
Co się stanie, jeśli użyjesz zwykłego '$ http'? –
Karolis, nie mam nic przeciwko używaniu zwykłego $ http. Zrobiłbym to, jeśli ustalimy, że $ zasób nie może być użyty do rozwiązania tego problemu. Czy to zostało potwierdzone? –