Возврат различных кодов ответа в MVC2 POST - PullRequest
0 голосов
/ 19 апреля 2011

Я разрабатываю 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.

1 Ответ

1 голос
/ 19 апреля 2011

если он работает с get, вы можете перенаправить на другое действие после обработки записи, и там вы можете установить заголовок repspose

...