2017-06-12 1 views
0

Comment renvoyer un code d'état HTTP avec l'objet renvoyé dans l'API REST à l'aide de VB.NET Framework 4.0?Renvoyer le code d'état HTTP à l'aide de l'API REST

J'ai googlé cela et trouvé quelques solutions comme jeter l'erreur avant de retourner l'objet comme ci-dessous:

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 

Mais dans mon cas, cette fonction est toujours le statut de retour 400 au lieu de 500 et je ne sais pas Pourquoi.

Comment résoudre ce problème? Y a-t-il un autre moyen de le faire?

+0

Avez-vous essayé d'intercepter le 'HttpException' et d'interroger l'exception interne? –

+0

n'y a-t-il aucun exemple? Et pourquoi ils ne l'attrapent pas dans d'autres templates –

+0

Eh bien, je ne peux pas dire pourquoi il ne provoque pas d'exception dans d'autres templates (??). Cependant, tout simplement, vous communiquez avec un serveur, il sait que vous communiquez avec lui, mais il ne peut pas comprendre votre demande, d'où l'exception 400. Attraper l'exception devrait fournir plus d'informations sur le problème. –

Répondre

0

Enfin, je trouve une solution:

Selon this link nous avons juste à utiliser « WebFaultException » qui va changer le statut de http. Maintenant, il y a aussi une belle méthode pour renvoyer l'erreur traitée:

Fonction publique TestMethod2 (nom ByVal As String) As String Met en œuvre 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

le statut de retour ici sera être 400 (essayez de changer la mauvaise demande à quelque chose d'autre et vous verrez la différence entre le nombre renvoyé num) et personnellement je préfère retourner l'objet Erreur que j'ai créé.