Вернуть код состояния HTTP с помощью REST API
Как мы возвращаем код состояния HTTP с объектом, возвращенным в REST API с использованием VB.NET Framework 4.0?
Я прогуглил это и нашел некоторые решения, такие как выдача ошибки перед возвратом объекта, как показано ниже:
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, и я не знаю почему.
Как мне исправить эту проблему? Есть ли другой способ сделать это?
2 ответа
Наконец я нашел решение:
По этой ссылке мы просто должны использовать "WebFaultException", который изменит статус http. Теперь есть также хороший метод для возврата обработанной ошибки:
Открытая функция TestMethod2(ByVal name As String) As String Реализует 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), и лично я предпочитаю возвращать объект Error, который я создал.
Если вы используете System.Net
Dim statsText As String = httpResponse.StatusCode
MsgBox(statsText)