2017-06-12 3 views
0

Wie geben wir einen HTTP-Statuscode mit dem in der REST-API mithilfe von VB.NET Framework 4.0 zurückgegebenen Objekt zurück?Geben Sie den HTTP-Statuscode mithilfe der REST-API zurück

Ich habe dies gegoogelt und fand einige Lösungen wie den Fehler zu werfen, bevor das Objekt wie unten Rückkehr:

Public Function InfoAndTerms(ByVal Lang As String) As Information() Implements IService.InfoAndTerms 

Dim result() As Information  
Try 
    ' Do something and fill result 
Catch ex As Exception 
    Throw New System.Web.HttpException(500, "Error - InfoAndTerms") 
Finally 
     InfoAndTerms = result 
End Try 

End Function 

Aber in meinem Fall ist diese Funktion immer Status zurückkehr 400 statt 500 und ich weiß nicht, Warum.

Wie behebe ich dieses Problem? Gibt es einen anderen Weg, das zu tun?

+0

Haben Sie versucht, die 'HttpException' abzufangen und die innere Ausnahme abzufragen? –

+0

gibt es kein Beispiel? und warum sie es nicht in anderen Vorlagen fangen –

+0

Nun, ich kann nicht sagen, warum es keine Ausnahme in anderen Vorlagen verursacht (??). Wie auch immer, Sie kommunizieren mit einem Server, er weiß, dass Sie mit ihm kommunizieren, aber er kann Ihre Anfrage nicht verstehen, daher die 400 Ausnahme. Das Abfangen der Ausnahme sollte weitere Informationen zu _what_ liefern, das das Problem verursacht. –

Antwort

0

Schließlich fand ich eine Lösung:

Nach this link müssen wir nur ‚WebFaultException‘ verwenden, die den HTTP-Status ändern wird. Jetzt gibt es auch eine schöne Methode, um den behandelten Fehler zurück:

Public Function TestMethod2 (ByVal Name As String) As String Implementiert IService.TestMethod2

If name = "" Then 

    Dim str As New ErrMessage 
    str.intErr = 1 
    str.strErrMessage = "bla bla bla" 

    Throw New WebFaultException(Of ErrMessage)(str, HttpStatusCode.BadRequest) 

End If 

Return name 

End Function

den zurückgegebenen Status hier wird sei 400 (versuch, eine schlechte Anfrage in etwas anderes zu ändern, und du wirst den Unterschied zwischen dem zurückgegebenen Status num sehen) und persönlich bevorzuge ich es, das Objekt zurückzugeben, das ich erstellt habe.

Verwandte Themen