Я разрабатываю REST API с использованием MVC2.
При обработке запроса POST в методе Action предполагается заполнить значениями различные настраиваемые заголовки ответа, а также задать конкретные коды ответов HTTP.
Поскольку это запрос POST, я возвращаю EmptyResult.
Когда я звоню против сайта, я вижу, что пользовательские заголовки заполняются, но код ответа (который я установил с помощью Response.StatusCode = ...) игнорируется, и я всегда получаю 200.
Мой технический руководитель предложил использовать HTTPException для получения кода ответа, но я считаю, что это неправильное определение. Я все равно попробовал, и, как я и подозревал, код ответа - запись, но все остальное (мои пользовательские заголовки ответа) облажалось.
Следуя аналогичной теме в StackOverflow, я попытался написать свой собственный подкласс ActionResult, чтобы справиться с этим, но опять же - я просто возвращаю 200 с.
Класс для тех, кто заинтересован, здесь:
Public Class HttpStatusCodeActionResult : Inherits ActionResult
#Region "Data Members"
Private mintStatusCode As Integer = 0
Private mstrStatusDescription As String = ""
#End Region
Public Sub New(ByVal vintStatusCode As Integer, ByVal vstrStatusDescription As String)
mintStatusCode = vintStatusCode
mstrStatusDescription = vstrStatusDescription
End Sub
Public Overrides Sub ExecuteResult(ByVal context As System.Web.Mvc.ControllerContext)
context.HttpContext.Response.StatusCode = mintStatusCode
If mstrStatusDescription <> "" Then
context.HttpContext.Response.StatusDescription = mstrStatusDescription
End If
End Sub
End Class
Кто-нибудь знает, каков правильный подход к возможности указать код ответа и вернуть мои пользовательские заголовки? Кстати, это только POST-запросы - GET-запросы работают нормально ...
Приветствия в ожидании,
Martin.