VisualStudioで提供されるlocalhost-devサーバーでASp.NetMVCアプリを実行しています。 IPアドレスを取得したい。私は試した
_Request.UserHostAddress
_
そして
Request.ServerVariables("REMOTE_ADDR")
どちらの場合も、結果として:: 1になります。それは何ですか?なぜ私はそれを手に入れているのですか? 127.0.0.1または192.168.1.xxxを取得するにはどうすればよいですか?
有効なIPアドレスを取得しています。 ::1
はIPv6のlocal_Hostです。 (local_Hostで使用されるアンダースコアSOある種の悪いテキストだと思わないようにする)
'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 。そこに例を挙げて、これを達成するためのクイックヘルパーメソッドを構築できるはずです。
ローカルホストが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
_Request.Params["REMOTE_ADDR"]
_
Request.ServerVariables("REMOTE_ADDR")
の代わりに
以下のコードは、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;
}