0

そのため、古い WCF レスト サービスでは、応答オブジェクトを調べてインターフェイス メンバー GetStatus を実行し、ステータス コードを取得してから WebOperationContext に設定するヘルパー クラスがありました。Web API ではこれができなくなったので、これをDelegatingHandler設定できるように検討しています。シナリオは次のとおりです。

すべての POST が201 - Createdコードになるわけではありません。たとえば、複雑なパラメーターを使用した GET タイプの操作に使用されるものもあります。ただし、一部の POST 操作は 201 になります。応答オブジェクトには、操作中に実行されるビジネス ロジックで設定される HttpStatus コードを返すIResultメソッドを持つインターフェイスが呼び出されます。GetResult()したがって、サービス操作 (投稿) を実行するとします。

var result = AdvancedSearch(myPayload);

を実行すると、200result.GetResult()の an が返されます。HttpStatus

var result = AddNewUser(myPayload);

そして実行しresult.GetResult()ます。201HttpStatus

現在、201 を返す必要があるこれらの操作では、単純にrequest.CreateResponse(...);から新しい応答オブジェクトを作成します。コントローラー自体のメソッド。しかし、チームの上級者の何人かはそれを好まない。彼らはこれを処理するための中心的なものを望んでいます。私たちが以前持っていたものに似たもの。

応答コードを設定するためのグローバル コンテキストがないため、DelegatingHandler. メソッドで応答に取り組むことができることは知っていますが、これが可能にContinueなるかどうかはわかりません。このメソッドは、実際の MVC フレームワークの外にある別のパイプラインで実行されることに気付きました。から応答ペイロードを取得し、インターフェイスからメソッドHttpResponseMessageを実行する方法がわかりません。GetResult()IResult

これは可能ですか?これを行う他の方法はありますか?コントローラーで応答を設定するのに行き詰まっていますか(実際にはそれで問題ありません。デューデリジェンスを行っているだけです)。

ティア

4

1 に答える 1

1

「TryGetContentValue」と呼ばれるHttpResponseMessageの拡張機能があります。これを使用して、フォーマッターによってシリアル化される前に応答コンテンツを取得できます。

于 2013-02-18T20:01:59.833 に答える