c# - 如何在C#中获取用户的公共(public)IP地址

标签 c# asp.net asp.net-mvc asp.net-mvc-4

我想要使用我网站的客户的公共(public) IP 地址。 下面的代码显示了局域网中的本地 IP,但我想要客户端的公网 IP。

//get mac address
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
String sMacAddress = string.Empty;
foreach (NetworkInterface adapter in nics)
{
    if (sMacAddress == String.Empty)// only return MAC Address from first card  
    {
        IPInterfaceProperties properties = adapter.GetIPProperties();
        sMacAddress = adapter.GetPhysicalAddress().ToString();
    }
}
// To Get IP Address


string IPHost = Dns.GetHostName();
string IP = Dns.GetHostByName(IPHost).AddressList[0].ToString();

输出:

Ip Address : 192.168.1.7

请帮我获取公网IP地址。

最佳答案

这是我用的:

protected void GetUser_IP()
{
    string VisitorsIPAddr = string.Empty;
    if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
    {
        VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    }
    else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
    {
        VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
    }
    uip.Text = "Your IP is: " + VisitorsIPAddr;
}

"uip"是aspx页面中显示用户IP的标签名。

关于c# - 如何在C#中获取用户的公共(public)IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285957/

相关文章:

c# - 如何在sql行中的数字前添加0

c# - 新的 netstandardapp 和 netcoreapp TFM 之间有什么区别?

javascript - 更新面板和模式窗口

asp.net-mvc - 每次我重新打开 Visual Studio 时,applicationhost.config 都会被更改

asp.net-mvc - Globalize.addCultureInfo 不是函数

c# - 如何根据提供的数据将数据显示到gridview中?

javascript - 避免在每次部署后缓存 JS、CSS 文件页面

sql - 连接到哪个数据库以供更高级别的应用程序管理其他数据库

asp.net-mvc - 哪里可以找到在 ASP .NET MVC2 中实现密码恢复的 C# 示例代码

c# - SSH.NET 未在设备上执行命令