2011-04-19 50 views
0

我正在開發一個使用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請求似乎做工精細......在期待

乾杯,

馬丁。

回答

1

如果它與讓你可以後期處理後重定向到另一個動作和那裏你可以設置repspose頭

+0

乾杯穆罕默德。你能解釋一下爲什麼你會重定向嗎? (我不是MVC大師......)。我會想,一旦我重定向到不同的操作方法,我會失去我已經創建的響應標題? – 2011-04-19 15:02:42

+0

您可以保留設置標題的操作,並且您可以在處理完帖子並通過重定向到達該操作後設置所有標題。這個建議本來是爲了解決這種情況。 – 2011-04-19 15:11:46

+0

那麼HTTP響應甚至會通過我們移動到新的操作結果來保持頭部?掛起 - 給它一個漩渦...... – 2011-04-19 15:46:54

相關問題