9

私のサイトには、開発環境では機能するが本番環境では機能しない重要なコード行があります。まあ、私はそれが開発中に機能したと言いますが、真実は::1、IPv6 ループバック アドレスである を与えたということです。

とにかく、私がやりたかったのは、サイトに来たユーザーの IP アドレスをキャプチャすることでした。したがって、私はRequest.UserHostAddressそうしていました。開発時には、私が言ったように、自分のマシンからサイトを実行していたので、正しいループバック アドレスが返されました。ライブでは、まったく違うことをしました。常にロード バランサーのアドレスが返されました。

私が理解しようとしているのはこれです。Request.UserHostAddress を使用してユーザーの IP アドレスを取得するのは間違っていましたか、それともネットワークの設定などに問題がありますか?

ありがとう、

サチン

4

3 に答える 3

11

あなた自身のアプリケーションの中から、あなたを助けるために他に何もされていなければ、あなたは立ち往生しています。それはあなたが利用できるのと同じくらい多くの情報です。

運が良ければ、ロードバランサーは、元のリクエストに関する情報を含む1つ以上のヘッダーを追加するように構成されています。

一般的な解決策の1つは、X-Forwarded-Forヘッダーです。

X-Forwarded-For(XFF)HTTPヘッダーフィールドは、HTTPプロキシまたはロードバランサーを介してWebサーバーに接続しているクライアントの発信元IPアドレスを識別するための事実上の標準です。

その後、プロパティを介してアクセスしRequest.Headersます。

ただし、この(または別の)ヘッダーが使用可能かどうかを確認することは、私たちが支援できることではありません。組織のロードバランサーを構成した人と話す必要があります。

于 2013-03-08T15:41:48.760 に答える