Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用RESTAPI返回HTTP状态代码_Vb.net_Rest_Httpresponse_Http Status Codes - Fatal编程技术网

Vb.net 使用RESTAPI返回HTTP状态代码

Vb.net 使用RESTAPI返回HTTP状态代码,vb.net,rest,httpresponse,http-status-codes,Vb.net,Rest,Httpresponse,Http Status Codes,如何使用VB.NET Framework 4.0返回REST API中返回的对象的HTTP状态代码 我在谷歌上搜索了一下,找到了一些解决方案,比如在返回对象之前抛出错误,如下所示: Public Function InfoAndTerms(ByVal Lang As String) As Information() Implements IService.InfoAndTerms Dim result() As Information Try ' Do something an

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

我在谷歌上搜索了一下,找到了一些解决方案,比如在返回对象之前抛出错误,如下所示:

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,我不知道为什么


如何解决此问题?还有其他方法吗?

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

根据我们的经验,我们只需要使用“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之间的差异),我个人更喜欢返回我创建的对象错误。

您是否尝试捕获
HttpException
并询问内部异常?没有任何示例吗?为什么他们没有在其他模板中捕捉到它呢?我不能说为什么它没有在其他模板中引起异常(??)。简单地说,您正在与服务器通信,它知道您正在与它通信,但它无法理解您的请求,因此出现了400异常。捕获异常应提供有关导致问题的原因的更多信息。但如果添加捕获,状态将变为200