QA@IT

ASP.NETでアクセス元のIPアドレスを取得

22452 PV

Visual Studio 2010(.NET Framework 4.0)のC#でASP.NETアプリケーションを開発しています。

アクセスしてきたクライアントのIPアドレスを取得したいのですが

Request.ServerVariables["REMOTE_ADDR"]

をローカルで実行すると「::1」とIPV6のアドレスが取得されます。
IPV4のアドレスが取得したい場合はどのようにすればよいのでしょうか?

ご教授をお願いします。

回答

以下のURLを見た限りですと

http://stackoverflow.com/questions/1932843/iis-request-userhostaddress-returning-ipv6-1-even-when-ipv6-disabled/12403731#12403731

ループバックアドレスの場合は物理NICじゃなくてWindowsの仮想NIC使ってるから難しいと書いてますね。
(だから別マシンからアクセスして Request.UserHostAddress でとってみましょうと書いてるみたいです)

ただ、それとは別にVista以降のマシンからアクセスすると、IPv6アドレスになってしまうという記述も見かけましたが本件とはちょっと外れるのかな。

私自身でためしていないので恐縮ですが、IPv4取得するサンプルを見かけましたので 参考までに どうぞ。各種ヘッダから取得してみて最後にはDNSにも問い合わせる感じみたいですね。
他に見かけたコードも大体はこういうやり方でした。
http://tutorialgenius.blogspot.jp/2010/09/aspnet-get-ipv4-address-even-if-user-is.html

編集 履歴 (0)
  • ありがとうございます。

    別のマシンからのアクセス時だけIPv4のアドレスが取れればいいので
    参考に調べて頂いた方法で試してみます。

    Vista以降の件は私も見かけたので不安ですが、ありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。