[解決済み] ASP.NET MVCとIIS7で生のHTTPリクエスト/レスポンスをログに記録する
質問内容
ASP.NET MVCを使用して)Webサービスを書いていますが、サポートのために、できるだけ生のオンザワイヤーフォーマット(すなわち、HTTPメソッド、パス、すべてのヘッダーとボディを含む)でリクエストとレスポンスをデータベースに記録できるようにしたいと思います。
しかし、このデータをどのようにすれば、最も "こじらせない "方法で入手できるのか、よくわからないのです。のすべてのプロパティを検査することによって、 リクエストがどのようなものであるかを再構成することができます。
HttpRequest
オブジェクトを作成し、そこから文字列を構築します(レスポンスについても同様です)。しかし、私は実際にワイヤーで送信されたリクエスト/レスポンスデータを手に入れたいと考えています。
私は、フィルター、モジュールなど、どのような傍受メカニズムでも喜んで使用しますし、解決策はIIS7に特化したものであってもかまいません。しかし、私はそれをマネージドコード内にのみ留めておきたいと考えています。
何かオススメはありますか?
編集する
私が注目するのは
HttpRequest
には
SaveAs
メソッドでディスクに保存することができますが、これは、公にアクセスすることができない内部ヘルパーメソッドのロードを使用して、内部状態からリクエストを再構築します(なぜこれがユーザー提供のストリームに保存できないのかは、私にはわかりません)。だから、オブジェクトからリクエスト/レスポンステキストを再構築するために最善を尽くさなければならないように見え始めている...うーん。
編集2 と言ったことにご注意ください。 全体 メソッド、パス、ヘッダーなどを含むリクエスト。現在のレスポンスでは、このような情報を含まないボディストリームしか見ていません。
編集 3: 誰もこの辺の質問を読まないの?これまで5つの回答がありましたが、生のオンザワイヤーリクエスト全体を取得する方法を示唆するものすらありませんでした。ええ、リクエストオブジェクトから出力ストリームやヘッダーやURLやその他もろもろを取得できることは知っていますよ。私はすでに質問の中でそれを述べました、見てください。
HttpRequestオブジェクトのすべてのプロパティを検査し、そこから文字列を構築することで、リクエストの外観を再構築することができます(レスポンスについても同様です)。しかし、私は実際に送信されたリクエスト/レスポンスデータを手に入れたいと考えています。
がわかっている場合は
コンプリート
生データ(ヘッダ、URL、httpメソッドなどを含む)を単純に取得することができない場合、知っていると便利です。同様に、私が尋ねたように、再構築することなく、生のフォーマット(そう、やはりヘッダー、URL、httpメソッドなどを含む)ですべてを取得する方法を知っているなら、それは非常に有用でしょう。しかし、私が知っているのは
HttpRequest
/
HttpResponse
オブジェクトは有用ではありません。そんなことは分かっています。もう言いましたよ。
注意:これが悪いアイデアだとか、スケーラビリティが制限されるなどと言い始める前に、私たちは分散環境でスロットリング、連続配信、アンチリプレイ機構も実装する予定なので、データベースのログはどのみち必要なのです。私は、これが良いアイデアかどうかの議論を求めているのではなく、どうすればそれが実現できるかを探しているのです。
どのように解決するのですか?
つまり、「生データを取得することはできないので、解析されたオブジェクトのプロパティからリクエスト/レスポンスを再構築する必要がある」という答えのようです。まあ、再構築はできたんですけどね。
関連
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み】ASP.NET MVCでWebアプリのベースURLを取得するにはどうすればよいですか?
-
[解決済み】Ruby on Railsを使用してHTTPリクエストを行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTPヘッダを送信した後、サーバーがステータスを設定できない IIS7.5
-
[解決済み] データベースに 'AspNetRoles' という名前のオブジェクトがすでに存在します。
-
[解決済み] System.Web.HttpException (0x80004005)。リクエストの最大長を超えました
-
[解決済み] ASP.NET MVC ビューエンジンの比較
-
[解決済み】ASP.NET MVC 3 razor ViewStart ファイルで異なるレイアウトを指定するには?
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み] MVCのHTMLヘルパーで生成されたHTML要素にclass属性を追加するにはどうすればよいですか?
-
[解決済み] mvc 4 で部分ビューにパラメータを渡すにはどうすればよいですか?
-
[解決済み] 型名または名前空間名 'DbContext' が見つかりませんでした [閉鎖]。