0

Amazon ELB でサイトを実行しています。サイトで何かを行うために、クライアントの IP アドレスを取得する必要があります。これは理想的ではありませんが、現時点では間違いなく IP が必要です。

これは、専用サーバーでうまく機能していました。しかし、ELB に移行して以来、使用するときに ELB の内部 IP アドレスのみをクライアントの IP アドレスとして取得しますRequest.UserHostAddress

私が追加したいくつかのブログから行くX-Forwarded-Forと、私の IIS ログには正しいクライアント IP がありますが、その IP は実際の Web ページに渡されません..

実際、ヘッダーにはそのようなフィールドはありません..またはヘッダーにそれに近いものはありません。

を調べるとRequest.Headers.ToString()、セッション Cookie、他の Cookie、クライアント ブラウザ (正しく) などの情報が表示されますが、IP については何もありません。実際、elb の静的 IP もわかりません。

Request.Headers["HTTP_X_FORWARDED_FOR"]当然のことながら、常に null です。

C# から実際のクライアント IP を取得するにはどうすればよいですか?

4

2 に答える 2

1

私は数日前に似たようなことをしました!

クライアントIPを見つけるために、使用Request.ServerVariablesして探す必要がありました。REMOTE_ADDR

このようなもの:

if (Request.ServerVariables["REMOTE_ADDR"] != null)
{
    string userIP = Request.ServerVariables["REMOTE_ADDR"]; 
}

それは私のために働いた..

于 2013-01-23T12:12:54.323 に答える
1

私のテストでは、クライアントの IP アドレスは、次の両方のケースで Elastic Load Balancer によって入力されました。

Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

Request.Headers["X-Forwarded-For"];

これらの変数の形式は、必ずしもクライアント IP アドレスだけではないことに注意してください。リクエストが複数回転送される場合は、サーバーの IP アドレスにコンマと区切り文字としてスペースが追加されます。

詳細については、 Amazon の Elastic Load Balancing 開発者ガイドを参照してください (X-Forwarded-For を検索してください)。

于 2013-02-15T10:29:13.033 に答える