为什么我在ASP.Net中获取:: 1作为IP地址..以及如何获得正确的IP地址?

16 vb.net ip-address asp.net-mvc-2

我在localhost中运行ASp.Net mvc应用程序 - 使用visual studio提供的dev服务器.我想获得IP地址.我试过了

Request.UserHostAddress

Request.ServerVariables("REMOTE_ADDR")

在这两种情况下,我得到:: 1作为结果.它是什么?我为什么要这样做?如何获得127.0.0.1或192.168.1.xxx?

pic*_*ypg 22

您正在获得有效的IP地址.::1是IPv6中的local_host.(在local_host中使用下划线来阻止SO认为它是某种坏文本)

  • 好吧..那么我怎样才能获得IPv4 IP呢? (2认同)
  • 哦哇!这只是因为它是同一台机器 - localhost 才以这种方式工作吗?当我部署到产品服务器时,我也会获得 IPv6 地址吗?我不需要客户端的 IPv6 地址,我想要他们的 IPv4 地址..我怎样才能获得它们? (2认同)
  • [这是一个很好的例子](http://www.4guysfromrolla.com/articles/071807-1.aspx).虽然显示用法的最后一位需要从`IP4.GetIP4Address`更改为`IPNetworking.GetIP4Address()`(我甚至在VB.NET中的无参数方法上使用`()`,但类名是键) (2认同)

Mar*_*ark 15

调用'localhost'时你所看到的是有效的.:: 1是IPv6环回地址.相当于IPv4的127.0.0.1.

而不是打电话:

 http://localhost/...

呼叫:

 http://{machinename}/...
        -or-
Run Code Online (Sandbox Code Playgroud)
 http://127.0.0.1/...
        -or- 
Run Code Online (Sandbox Code Playgroud)
 http://192.168.1.XXX/...

[将{machinename}替换为您机器的计算机名称.将XXX替换为您的计算机IP地址.]

任何通过机器调用MVC应用程序的人都将拥有有效的IP地址.如果客户端是IPv6主机,它将保存IPv6 IP地址.如果客户端是IPv4主机,它将保存IPv4 IP地址.

如果您总是想要保存IPv4地址,请查看本文,了解如何使用简单的类http://www.4guysfromrolla.com/articles/071807-1.aspx完成它.您应该能够以此为例,构建一个快速帮助方法来实现此目的.