Wie gebe ich eine 401-authentication error, um eine RestSharp client?
In meiner Mvc-Api-controller, wenn der Benutzer nicht authentifiziert werden kann, werfe ich eine HttpException-401. Jedoch, die RestSharp client scheint übersetzen diese in ein Http 500-Statuscode.
Ich möchte in der Lage sein zu werfen HttpExceptions von meinem Mvc-controller und haben die RestSharp client bewahren den ursprünglichen Fehler in seinem StatusCode-Eigenschaft.
Außerdem merke ich, wenn der server nicht auf, wenn der RestSharp client stellt eine Anfrage, die Antwort hat ein status-code von 0, und eine Antwort-code des Fehlers. Sollte die RestSharp nicht wieder einen 404-http-Fehler-code anstelle?
Was ich wirklich brauche, ist ein wenig Dokumentation, wie RestSharp arbeitet mit HttpCodes.
Aktualisiert mit code in meinem api-controller:
throw new HttpException((int)HttpStatusCode.Unauthorized, AuthenticationError);
InformationsquelleAutor jaffa | 2012-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie sichergestellt, dass Sie wirklich zurückkehren 401 an den client? ASP.NET MVC hat einige seltsame Fehler-Handhabung manchmal.
Versuchen, wieder ein
HttpUnauthorizedResult
statt. MSDN-docMeine Antwort gilt noch. Ich finde es wahrscheinlicher, dass ASP.NET MVC verarbeitet Ihre
HttpException
falsch (und zurück a 501) alsRestSharp
konvertiert 401 bis 500Dies scheint zu brechen, die httpcodes dann. Ich werde nie in der Lage sein, um die Anzeige der Korrektur der Fehler, die zurück an den Benutzer. Mvc sollte, senden Sie die richtigen 401 an den client zurück, in diesem Fall RestSharp. Gibt es eine Möglichkeit, um dieses?
Verwenden Sie die Aktion-Ergebnis
HttpUnauthorizedResult
von Ihrer Berechtigung-filter (oder der controller-action). Es ist ein Ergebnis einer Aktion, die enthalten ist in ASP.NET MVCNoch kein Glück mit dieser, kann jemand versuchen, dieses problem reproduzieren, mit ASP.Net MVC und RestSharp. Ich erhöhe http-Fehler und Sie sind immer verloren, irgendwo auf dem Weg.
InformationsquelleAutor jgauffin
Ich habe in der Lage, dieses Problem zu untersuchen mich. Forms-Authentifizierung auf der web-app, die bedeutet, dass, wenn ein HttpUnauthorizedResult nach der Rückgabe aus dem controller, MVC-kicks in und leitet auf die login-Seite. Dies hat den Effekt, dass der client unter der Annahme, dass keine Fehler aufgetreten sind.
Ich dieses Problem gelöst, indem mit Hilfe der aspnet.suppressformsredirect nuget-Paket, und fügen Sie die unterdrücken, die Flagge in die Rückmeldung für die Authentifizierung.
InformationsquelleAutor jaffa
Hier sind zwei Möglichkeiten, um wieder eine 401 in MVC.
oder
InformationsquelleAutor Daniel Pamich
Lame, lame, lame, dass wir laden Sie ein NuGet-Paket zurückgeben 401! Mein workaround ist, zu reagieren mit einem 403 Forbidden mit einer Erklärung:
Nicht semantisch korrekt, aber ist weniger Arbeit, weniger laufende Wartung und weniger Risiko.
InformationsquelleAutor Rap