0

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リクエストは正常に機能しているようです...

期待して乾杯、

マーティン。

4

1 に答える 1

1

get で動作する場合は、投稿を処理した後に別のアクションにリダイレクトでき、そこで repspose ヘッダーを設定できます

于 2011-04-19T14:53:55.653 に答える