我正在開發一個使用MVC2的REST API。在MVC2 POST下返回不同的響應代碼
在Action方法中處理POST請求時,我應該填充各種帶有值的自定義Response頭,還要設置特定的HTTP響應代碼。
由於這是一個POST請求,我正在返回一個EmptyResult。
當我對站點調用時,我可以看到自定義標頭正在填充,但響應代碼(我使用Response.StatusCode =設置)被忽略,並且我總是得到200.
我的技術負責人建議使用HTTPException獲取響應代碼,但我認爲這是錯誤的評價。無論如何,我已經嘗試過了,正如我懷疑的那樣,響應代碼是寫入的,但其他所有內容(我的自定義響應頭)都被搞砸了。
繼StackOverflow上的類似線程後,我試圖寫我自己的ActionResult的子類來處理這個問題,但是我又回到了200s。
類,對於那些有興趣,是在這裏:
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請求似乎做工精細......在期待
乾杯,
馬丁。
乾杯穆罕默德。你能解釋一下爲什麼你會重定向嗎? (我不是MVC大師......)。我會想,一旦我重定向到不同的操作方法,我會失去我已經創建的響應標題? – 2011-04-19 15:02:42
您可以保留設置標題的操作,並且您可以在處理完帖子並通過重定向到達該操作後設置所有標題。這個建議本來是爲了解決這種情況。 – 2011-04-19 15:11:46
那麼HTTP響應甚至會通過我們移動到新的操作結果來保持頭部?掛起 - 給它一個漩渦...... – 2011-04-19 15:46:54