4

BindIPEndPointDelegate を使用して HttpWebRequest のソース ポートを変更する方法をあちこちで検索しました。これに関する複数の投稿を見つけました:

ここここ

しかし、それは私のために働いていないようです。この男にも同じ問題が見つかりました: Visual Studio 2010 で SOAP Web サービスの発信/呼び出しポートを定義する

基本的に、Web ページに接続するときにソース ポートを変更したいと考えています。BindIPEndPointDelegate は非常に簡単です。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
 req.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEp, retryCount) =>
             {
                 return new IPEndPoint(IPAddress.Any, 8086);
             };

netstat -n を使用して接続を確認すると、送信元 IP アドレスとして myipaddress:8086、送信先 IP:80 が表示されるはずです。netstat に表示されるのは、指定したポートでループバック (127.0.0.1:8086) を作成していることです。netstat -nのスクリーンショットを見る

初めての投稿なので画像は載せません。というわけで画像はこちらから

BindIPEndPointDelegate がループ バック接続を作成するのはなぜですか? また、指定したポートで WebRequest をブラウザーのように動作させるにはどうすればよいですか?

私はwin7 Proボックスを使用しており、ローカルファイアウォールはなく、プロキシを経由していません。

4

1 に答える 1

0

今日も同じような問題がありました。BindIPEndPointDelegateで特定の送信元ポートを選択しましたが、WireSharkを使用すると、選択したものとは常に異なる送信元ポートが表示されました。次に、 Fiddler2WebDebuggerを使用してプロキシを暗黙的に使用していることを発見しました。Fiddlerをオフにすると、Bindデリゲートで要求したWireSharkの送信元ポート番号が表示されるようになりました。

結果として、どこかにプロキシがある場合、これと同じ動作が見られる可能性があります。

于 2013-03-01T11:24:00.023 に答える