2016-05-12 6 views
1

WebAPI/REST ermöglicht das Senden benutzerdefinierter Fehlermeldungen zusammen mit einem Standardstatuscode, d. H. 402 - Nicht gefunden + Ihre eigene Nachricht in der Kopfzeile/im Text.Benutzerdefinierte Fehler zurückgeben WebApi ASP.NET 5 HttpResponseException falscher Statuscode

Das funktioniert gut auf ASP.NET 4.X, aber mit ASP.NET 5 RC 1 ist etwas nicht in Ordnung.

Während mein Code benutzerdefinierte Fehler zu werfen etwas wie folgt aussieht:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Ambiguous) 
{ 
    Content = feedback, ReasonPhrase = reason } 
); 

Der Code (zu Angular) zurückgegeben wird, ist nicht der Code angegeben (300 in diesem Beispiel). Auf localhost/IIS Express bekomme ich 500 Internal Server Error und in der Produktion auf Azure bekomme ich 404 Not Found.

an den ASP.NET docs Suche ich etwas sehe, die relevant sein könnten:

Wenn der Server eine Ausnahme abfängt, bevor die Header es einen 500 Internal Server Error Antwort ohne Körper gesendet wurden sendet .

https://docs.asp.net/en/latest/fundamentals/error-handling.html#server-exception-handling

So hat jemand erfolgreich zurückgegeben Statuscodes mit benutzerdefinierten (Körper) Nachrichten an Client von ASP.NET 5 RC 1 WebAPI?

UPDATE:

Diese Methode scheint besser zu funktionieren - aber das nicht beantworten, warum HttpResponseException funktioniert nicht.

this.Response.StatusCode = (int)HttpStatusCode.BadRequest; 
return this.HttpBadRequest(new { ex.Message }); 

Antwort

0

Ihre aktualisierte Frage zu beantworten, sie entfernt, dass die Verwendung von HttpResponseException, weil es die schlechten Praxis der Verwendung von Ausnahmen für die Ablaufsteuerung gefördert. Siehe https://github.com/aspnet/Mvc/issues/4311.

+0

Danke, das erklärt es. Die Dokumentation fehlt sehr –

Verwandte Themen