我正在使用 MVC2 开发一个 REST API。
在 Action 方法中处理 POST 请求时,应该使用值填充各种自定义响应标头,并设置特定的 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 请求似乎工作正常......
期待中的欢呼,
马丁。