在MVC2 POST下返回不同的响应代码

时间:2011-04-19 14:42:04

标签: asp.net-mvc-2 post header http-response-codes

我正在使用MVC2开发REST API。

在Action方法中处理POST请求时,我应该使用值填充各种自定义Response头,并设置特定的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请求似乎工作正常......

期待干杯,

马丁。

1 个答案:

答案 0 :(得分:1)

如果可以使用,你可以在处理帖子后重定向到另一个动作,那里你可以设置repspose标题