2011-04-19 51 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

相关问题