1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVCとIIS7で生のHTTPリクエスト/レスポンスをログに記録する

2022-04-30 09:15:05

質問内容

ASP.NET MVCを使用して)Webサービスを書いていますが、サポートのために、できるだけ生のオンザワイヤーフォーマット(すなわち、HTTPメソッド、パス、すべてのヘッダーとボディを含む)でリクエストとレスポンスをデータベースに記録できるようにしたいと思います。

しかし、このデータをどのようにすれば、最も "こじらせない "方法で入手できるのか、よくわからないのです。のすべてのプロパティを検査することによって、 リクエストがどのようなものであるかを再構成することができます。 HttpRequest オブジェクトを作成し、そこから文字列を構築します(レスポンスについても同様です)。しかし、私は実際にワイヤーで送信されたリクエスト/レスポンスデータを手に入れたいと考えています。

私は、フィルター、モジュールなど、どのような傍受メカニズムでも喜んで使用しますし、解決策はIIS7に特化したものであってもかまいません。しかし、私はそれをマネージドコード内にのみ留めておきたいと考えています。

何かオススメはありますか?

編集する 私が注目するのは HttpRequest には SaveAs メソッドでディスクに保存することができますが、これは、公にアクセスすることができない内部ヘルパーメソッドのロードを使用して、内部状態からリクエストを再構築します(なぜこれがユーザー提供のストリームに保存できないのかは、私にはわかりません)。だから、オブジェクトからリクエスト/レスポンステキストを再構築するために最善を尽くさなければならないように見え始めている...うーん。

編集2 と言ったことにご注意ください。 全体 メソッド、パス、ヘッダーなどを含むリクエスト。現在のレスポンスでは、このような情報を含まないボディストリームしか見ていません。

編集 3: 誰もこの辺の質問を読まないの?これまで5つの回答がありましたが、生のオンザワイヤーリクエスト全体を取得する方法を示唆するものすらありませんでした。ええ、リクエストオブジェクトから出力ストリームやヘッダーやURLやその他もろもろを取得できることは知っていますよ。私はすでに質問の中でそれを述べました、見てください。

HttpRequestオブジェクトのすべてのプロパティを検査し、そこから文字列を構築することで、リクエストの外観を再構築することができます(レスポンスについても同様です)。しかし、私は実際に送信されたリクエスト/レスポンスデータを手に入れたいと考えています。

がわかっている場合は コンプリート 生データ(ヘッダ、URL、httpメソッドなどを含む)を単純に取得することができない場合、知っていると便利です。同様に、私が尋ねたように、再構築することなく、生のフォーマット(そう、やはりヘッダー、URL、httpメソッドなどを含む)ですべてを取得する方法を知っているなら、それは非常に有用でしょう。しかし、私が知っているのは HttpRequest / HttpResponse オブジェクトは有用ではありません。そんなことは分かっています。もう言いましたよ。


注意:これが悪いアイデアだとか、スケーラビリティが制限されるなどと言い始める前に、私たちは分散環境でスロットリング、連続配信、アンチリプレイ機構も実装する予定なので、データベースのログはどのみち必要なのです。私は、これが良いアイデアかどうかの議論を求めているのではなく、どうすればそれが実現できるかを探しているのです。

どのように解決するのですか?

つまり、「生データを取得することはできないので、解析されたオブジェクトのプロパティからリクエスト/レスポンスを再構築する必要がある」という答えのようです。まあ、再構築はできたんですけどね。