IIS6 で実行されていた古い ISAPI フィルターを置き換えたいと考えています。このフィルターは、リクエストが特別な種類のものかどうかをチェックし、ヘッダーを操作してリクエストを続行します。別の特別な ISAPI モジュールを呼び出すために必要な操作メソッドに 2 つのヘッダーが追加されます。
したがって、次のような ISAPI C++ コードがあります。
DWORD OnPreProc(HTTP_FILTER_CONTEXT *pfc, HTTP_FILTER_PREPROC_HEADERS *pHeaders)
{
if (ManipulateHeaderInSomeWay(pfc, pHeaders))
{
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
return SF_STATUS_REQ_FINISHED;
}
この ISAPI フィルターを、IIS7 のマネージ モジュールとして書き直したいと思います。だから私はこのようなものを持っています:
private void OnMapRequestHandler(HttpContext context)
{
ManipulateHeaderInSomeWay(context);
}
そして今何?リクエストが本来あるべきことをしていないように見えますか?
同じメソッドを実装する IIS7 ネイティブ モジュールを既に作成しています。しかし、このメソッドには戻り値があり、次に何をすべきかがわかります。
REQUEST_NOTIFICATION_STATUS CMyModule::OnMapRequestHandler(IN IHttpContext *pHttpContext, OUT IMapHandlerProvider *pProvider)
{
if (DoSomething(pHttpContext))
{
return RQ_NOTIFICATION_CONTINUE;
}
return RQ_NOTIFICATION_FINISH_REQUEST;
}
操作されたコンテキストを再度送信する方法はありますか?