HttpWebRequestクラスが送信する生のHTTPリクエストを見るにはどうすればよいですか?
質問
皆さんは、「Fiddler のようなデバッグ用プロキシサーバーを使用する」と答えられると思いますが、そんなに簡単なことではありません。
私の状況は次のとおりです。ASP.NET ページのコードビハインド (aspx.cs) で、サーバー上で実行されるコードがあり、(他のものの中で) 別の サーバーへの接続を確立し、いくつかのものを取得し、そしてそれをフォーマットしてブラウザに返します。
問題は、他のサーバーが間違ったことを行っていることです。そこで、ページにデバッグフラグを渡すことができるようにしたいのです (クエリ文字列を介して、たとえば ?debug=true) 。 完全に生の HTTP リクエストを出力し、何が問題なのかを知ることができます。 このコードはいくつかの場所で実行されているので、開発、ステージング、または運用でこのフラグを渡すだけで、運用サーバーがどこかに存在するプロキシ サーバーと対話できるかどうかなどを把握することなく、リクエストを確認できるようにしたいのです。
これを行うのは簡単だと思うでしょう? そこで、私がおかしいか何かだと思いますが、HttpWebRequest とその親クラス WebRequest のリファレンスを調べてみましたが、--何もありませんでした。 何もできません。 Microsoftがこれを考えたと思うでしょう。 最も近いのは "Headers" コレクションにアクセスできることですが、私がそれを試したとき、それは "content length" のような本当に重要なヘッダーをいくつか省略しました -- だからそれは私に "lie" しているに違いありません (私はそれが嘘をついていることを知っています。なぜならリモートサーバーが 200 状態を返しているという事実がわかっているので、リクエストが成功しているのですが、悪い/異なる/間違ったデータを返しているだけなのです) 。
以下は、要求されたコードの例です。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.whatever.com");
req.Method = ... whatever ...;
... other setup for the request ...
/* At this point we are about to send the request.
What does the raw HTTP request look like? */
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
どのように解決するのですか?
System.Net のトレース機構を使用して、ワイヤ上で送信された生の HTTP リクエストを確認することができます。また、あなた自身の tracelistener をプロセスに追加することもできます。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] HTTP POST Web リクエストの作成方法
-
[解決済み] HttpClientリクエストのContent-Typeヘッダーはどのように設定するのですか?
-
[解決済み】.Net HttpWebRequest.GetResponse() で http ステータスコード 400 (bad request) が返されると例外が発生する。
-
[解決済み] C#で簡単なプロキシを作成する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] C#で簡単なプロキシを作成する方法は?