MVC2を使用してRESTAPIを開発しています。
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リクエストは正常に機能しているようです...
期待して乾杯、
マーティン。