2017-06-12 105 views
0

如何使用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_導致問題的信息。 –

回答

0

最後,我找到了一個解決方案:

根據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之間的差異),並且我個人更喜歡返回創建的對象錯誤。

相關問題