クライアントシステムにインストールするWindowsサービスを開発中です。このアプリケーションは、サーバー上のSOAP Webサービスを定期的に呼び出します。私たちは、トラブルシューティングの目的でサービスにアクセスするたびに、クライアントシステムのローカルIPアドレスをSOAP要求に含めることを望んでいます。ここでの他の記事を見て、私は、システム上のインターフェイスのためのIPアドレスのリストを取得するために、次のコードを見つけた:Windowsサービス内でWebサービスコールを行うためのインタフェースのローカルIPアドレスを取得する
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
このコードは、Windowsサービスに含まれています。この配列内のどのIPがWebサービスコールのルーティング先のインターフェイスに割り当てられているかを簡単に判断する方法はありますか?
実際には、ルーティングはリクエストの作成後に行われます。あなたができることは、リクエストが来たIPをサーバ側で捕捉することですが、ルーティング/ NATによっては、発信者のIPが表示されないことがあります。 – Joe
@Joe、ありがとう。だから私は、サービスをヒットするHttpWebRequestオブジェクトを使用している場合は、要求を送信するインターフェイスのローカルIPを取得する方法はありません?ローカルIPは本当に私たちが望んでいるものです。これは実行可能な選択肢のように聞こえますか?ソケット・クラスを使用してエンドポイントに接続し、ソケットのLocalEndPointを取得しようとしました。これを行うことで間違ったIPを返す危険がありますか?私は、ソケット接続とサービスリクエストが必ずしも同じインターフェースを経由しないかもしれないと考えています。 – Poosh