使用REST API返回HTTP状态码

问题描述:

如何使用VB.NET Framework 4.0返回REST API中返回的对象的HTTP状态码?使用REST API返回HTTP状态码

我用Google搜索这一点,并找到了一些解决方案,如返回对象如下之前抛出的错误:

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 

但在我的情况下,该功能总是返回状态400,而不是500,我不知道为什么。

我该如何解决这个问题?有没有其他方法可以做到这一点?

+0

您是否尝试过捕获HttpException并询问内部异常? –

+0

是不是有任何例子?以及为什么他们没有捕捉到它在其他模板 –

+0

嗯,我不能说为什么它不会导致其他模板(??)的异常。不过简单地说,你正在与服务器通信,它知道你正在与它通信,但它不能理解你的请求,因此是400例外。捕捉异常应该提供更多关于_what_导致问题的信息。 –

最后,我找到了一个解决方案:

根据this link我们只需要使用“WebFaultException”这将改变http状态。现在也有一个不错的方法返回处理错误:

公共功能TestMethod2(BYVAL名作为字符串)作为字符串器具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 

端功能

返回的状态,这里将是400(尝试将错误的请求更改为其他内容,并且您将看到返回的状态num之间的差异),并且我个人更喜欢返回创建的对象错误。