カスタム クライアント ソフトウェアからの HTTP 経由のバイナリ ポストを直接処理する HttpHandler があります。クライアント ソフトウェアがデータを送信すると、IIS 7 が 400 - Bad Request で応答することがあります。「400 Bad Request」は、HTTP.SYS がユーザー モードに何も通知せずにカーネル モードで透過的に処理するという点で特別であるため、ASP.NET で処理されるエラーは発生しません。これらのシナリオで応答ストリームに特定のデータを書き込むことができるように、ASP.NET でこの http 400 をキャッチすることは可能ですか? 現在のリクエスト/レスポンスにある必要があるため、別のページへのリダイレクトはオプションではありません。
3 に答える
400 の原因がわかっている場合は、レジストリを介して http.sys の動作をカスタマイズして対処できる場合があります。
http://support.microsoft.com/kb/820129
ただし、これを行うとセキュリティとパフォーマンスに影響が出る可能性があることに注意してください。
もう 1 つのオプションは、IIS の前にフィルタリング プロキシを使用することです。これにより、リクエストが先に進む前にキャプチャされます。
代わりに、カスタム クライアント ソフトウェアを修正するよう依頼します。失敗したリクエストを示すレポートを提供します。可能であれば、Wireshark などのスニファを実行し、ソフトウェアに問題があると思われない場合はパケットを送信します。
カスタムクライアントによってIISがHTTP400をトリガーする場合、それはおそらく欠陥があり、標準に従って有効なHTTP要求を送信していません。クライアントを変更できるのであれば、それは正しいことです。それ以外の場合、作業しているのはHTTPではなく、IISはHTTP要求を処理するように設計されています。したがって、独自のプロトコル用にカスタムサーバーを実行する必要があります(これは非標準のHTTPのようなものです)。
IIS / ASP.NETを使用してこのような要求を処理することはお勧めしません。これは、予期しない奇妙な事態が発生する可能性があるためです。