web-dev-qa-db-ja.com

ASP.Net ..でIPアドレスとして:: 1を取得するのはなぜですか?適切なIPアドレスを取得する方法は?

VisualStudioで提供されるlocalhost-devサーバーでASp.NetMVCアプリを実行しています。 IPアドレスを取得したい。私は試した

_Request.UserHostAddress_

そして

Request.ServerVariables("REMOTE_ADDR")

どちらの場合も、結果として:: 1になります。それは何ですか?なぜ私はそれを手に入れているのですか? 127.0.0.1または192.168.1.xxxを取得するにはどうすればよいですか?

16
user529141

有効なIPアドレスを取得しています。 ::1はIPv6のlocal_Hostです。 (local_Hostで使用されるアンダースコアSOある種の悪いテキストだと思わないようにする)

22
pickypg

'localhost'を呼び出すときに表示される内容は有効です。 :: 1はIPv6ループバックアドレスです。 IPv4の127.0.0.1に相当します。

呼び出す代わりに:

 http:// localhost /.。

コール:

 http:// {machinename} /.。
        -or-
 http://127.0.0.1/.. ..
        -or- 
 http://192.168.1.XXX /.。

[{machinename}をマシンのコンピューター名に置き換えます。 [〜#〜] xxx [〜#〜]をコンピューターのIPアドレスに置き換えます。]

その結果、MVCアプリにマシンを呼び出すと、有効なIPアドレスが割り当てられます。クライアントがIPv6ホストの場合、IPv6IPアドレスが保存されます。クライアントがIPv4ホストの場合、IPv4IPアドレスが保存されます。

常にIPv4アドレスを保存したい場合は、単純なクラスでどのようにそれを達成したかについて、この記事を参照してください http://www.4guysfromrolla.com/articles/071807-1.aspx 。そこに例を挙げて、これを達成するためのクイックヘルパーメソッドを構築できるはずです。

15
Mark

ローカルホストが127.0.0.1を返すようにしたい場合は、「hosts」ファイルを変更する必要があるかもしれません。 「%systemdrive%\ Windows\System32\drivers\etc」にあります。

それは私のために働きます、今私は "Request.ServerVariables [" REMOTE_ADDR "]"で127.0.0.1を取得します。 127.0.0.1のコメントを外します(#を削除します)。

ここでデフォルトのhostsファイルを見つけることができます http://support.Microsoft.com/kb/972034

私のファイル

#ローカルホストの名前解決はDNS自体の中で処理されます。

127.0.0.1       localhost

#:: 1 localhost

1
Dipa
_Request.Params["REMOTE_ADDR"]
_

Request.ServerVariables("REMOTE_ADDR")の代わりに

1
slandau

以下のコードは、IPを見つけるために使用しました

public static string GetIp()
        {
            var Request = HttpContext.Current.Request;

            try
            {

                Console.WriteLine(string.Join("|", new List<object> {
                    Request.UserHostAddress,
                    Request.Headers["X-Forwarded-For"],
                    Request.Headers["REMOTE_ADDR"]
                })
                );

                var ip = Request.UserHostAddress;
                if (Request.Headers["X-Forwarded-For"] != null)
                {
                    ip = Request.Headers["X-Forwarded-For"];
                    Console.WriteLine(ip + "|X-Forwarded-For");
                }
                else if (Request.Headers["REMOTE_ADDR"] != null)
                {
                    ip = Request.Headers["REMOTE_ADDR"];
                    Console.WriteLine(ip + "|REMOTE_ADDR");
                }
                return ip;
            }
            catch (Exception ex)
            {
                Log.WriteInfo("Message :" + ex.Message + "<br/>" + Environment.NewLine +
                    "StackTrace :" + ex.StackTrace);
            }
            return null;
        }
0
Andi AR