私のOWINミドルウェアはこのようなものです。 (フレームワークはASP.NET Web APIです)。OWINミドルウェアからの応答オブジェクトの変更
public class MyMiddleware : OwinMiddleware
{
public MyMiddleware(OwinMiddleware next) : base(next) { }
public override async Task Invoke(OwinRequest request, OwinResponse response)
{
var header = request.GetHeader("X-Whatever-Header");
await Next.Invoke(request, response);
response.SetHeader("X-MyResponse-Header", "Some Value");
response.StatusCode = 403;
}
}
質問:
OwinMiddleware
から派生することをお勧めますか?私はKatanaのソースでは、ミドルウェアクラスのいくつかはOwinMiddleware
から派生していますが、いくつかはそうではありません。リクエストヘッダーは大丈夫です。ミドルウェアで
Next.Invoke
の後に応答ヘッダーまたはステータスコードを設定しても、クライアントに返される応答には影響しません。しかし、Next.Invoke
コールの前に応答ヘッダーまたはステータスを設定すると、ヘッダーと設定したステータスの応答がクライアントに返されます。これらを設定する正しい方法は何ですか?
おかげユーセフ:ここ
はユーセフのコードのバージョンがあります。ポイント#2の場合、Katanaソースまたは他のどこかのサンプルコードが、ベストプラクティスのptから見えますか? OWINミドルウェアを使用する場合、私が求めていることはかなり一般的な必要性であり、このストリームを単に応答ヘッダーを設定するために切り替えることになっていると思いますか?すべてのポインタが評価されます。 – Badri
あなたの提案に従うことで問題を解決できますが、簡単な方法はありませんか?つまり、特にWeb APIのメッセージハンドラに使用されている場合は、応答ヘッダーを途中で設定するだけでは大したことではありません。 – Badri
簡単な方法で答えを更新しました。それが動作すれば教えてください。 –