Werfen HttpResponseException in WebAPI action-Methode Rücksendung von leeren 200-Antwort
Ich versuche zurück zu kehren entsprechenden Http-codes und die Antworten von meiner Anwendung, aber ich bin kämpfen. Es scheint, dass es gibt 2 Möglichkeiten, um bestimmte http-Antworten.
Den Weg ich will mit ihm zu beschäftigen, ist durch das werfen einer HttpResponseException
:
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
Allerdings, wenn ich hierzu die Antwort, die ich sehe, ist nur ein leeres 200-Antwort!
Scheint es auch, dass Sie können auch ändern Sie die Signatur der action-Methode zum zurückgeben einer HttpResponseMessage
wie diese:
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
Ich wirklich nicht wollen, dies zu tun, wenn ich helfen kann, ich würde viel lieber meine zurück geben, wie das Objekt, ich versuche abzurufen, anstatt den Umschlag jedes mal in einer HttpResponseMessage
.
Gibt es einen Grund, warum die erste Methode ist die Rückgabe eine leere 200 statt der 401 mit der Nachricht wie ich es will?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei mögliche Lösungen;
Ersten. Stellen Sie sicher, dass Ihre IIS konfiguriert ist, lassen Fehler passieren
Zweiten. Ich bin mir nicht ganz sicher, aber ASP.NET Web-API -Sie erfordern die Entwicklung einer maßgeschneiderten ActionFilter richtig zu übersetzen Ausnahmen Ergebnis-Typen. Dies ist die Art, wie ich persönlich Sie für die Fehlerbehandlung in Web-API:
Überprüfen IncludeErrorDetailPolicy Einstellung auf HttpConfiguration. Standardmäßig ist die Regelung, den Fehler anzeigen details beim Zugriff auf Web-API lokal.