从主机名获取IPAddress

本文关键字:IPAddress 获取 主机 | 更新日期: 2023-09-27 17:54:23

我想使用C#在我的aspx页面上获得主机的IP地址,我使用DNS类方法来获得这些。

它在本地工作得很好,但是当我在IIS7上部署解决方案时,它只返回由ISP分配的IP地址,但我想要该机器的本地IP地址。

任何建议吗?

从主机名获取IPAddress

这是一个例子。在本例中,我们可以获得给定主机名的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/>");
    }

我很有信心你不能得到本地的192.168.C。像这样的本地机器的D地址。

这是因为安全性和可见性(NAT等)。

如果您希望唯一标识一个用户。我会看会话或cookie

在公共DNS中查找ip地址时,您将获得对外通信的官方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;
}