我想使用C#
,我使用的DNS类的方法来获得这些我aspx
页面上获得主机的IP地址获取ip地址。从主机名
它能正常工作本地,但是当我部署在IIS7的解决方案只返回由ISP分配的IP地址,但我想那台机器的本地IP地址。
有什么建议吗?
我想使用C#
,我使用的DNS类的方法来获得这些我aspx
页面上获得主机的IP地址获取ip地址。从主机名
它能正常工作本地,但是当我部署在IIS7的解决方案只返回由ISP分配的IP地址,但我想那台机器的本地IP地址。
有什么建议吗?
我相当有信心,你不能得到本地机器的本地192.168.C.D地址这样的。
这是因为安全性和可视性(NAT的等)。
如果您正在寻找唯一标识一个用户。我会看看会话或cookie。
当在公共DNS查找IP地址,你会得到向外传达的officiall IP地址。如果使用NAT,并且您希望内部地址必须连接到包含内部IP地址的DNS服务器。
您可以使用此方法...
public static String GetIP()
{
String ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if(string.IsNullOrEmpty(ip))
{
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return ip;
}
这是最接近你的解决方案,但它不能保证它能工作。中间路由器可以设置HTTP_X_FORWARDED_FOR变量中的任何IP。 – 2011-05-02 07:31:17
这是针对服务器机器ip的,我想要在局域网上获得任何机器的ip。 – Ehtsham 2011-05-02 09:24:47
这将返回客户端IP,你可以试试。 – 2011-05-02 09:25:52
以下是此例。 在这个例子中,我们可以得到我们给定主机名的IP地址。
string strHostName = "www.microsoft.com";
// Get DNS entry of specified host name
IPAddress[] addresses = Dns.GetHostEntry(strHostName).AddressList;
// The DNS entry may contains more than one IP addresses.
// Iterate them and display each along with the type of address (AddressFamily).
foreach (IPAddress address in addresses)
{
Response.Write(string.Format("{0} = {1} ({2})", strHostName, address, address.AddressFamily));
Response.Write("<br/><br/>");
}
请注意,版主和其他用户正在删除您的垃圾链接到您自己的网站中的答案。请停止包括他们,以避免对这些链接进行更严厉的制裁。 – 2012-11-05 14:47:27
本地IP地址是指机器有一个局域网一样192.168.xxx.xxx – Ehtsham 2011-05-02 07:35:29
所以'HTTP_X_FORWARDED_FOR'穆罕默德阿赫塔尔建议是你最好的选择地址。 – 2011-05-02 07:55:21