Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取客户端的公共IP地址_C#_Ip_Asp.net Mvc 5 - Fatal编程技术网

C# 获取客户端的公共IP地址

C# 获取客户端的公共IP地址,c#,ip,asp.net-mvc-5,C#,Ip,Asp.net Mvc 5,我正在创建一个web应用程序,我需要一个功能,如果有人客户端登录到我的网站,则必须登录客户端的公共IP地址。我有一些javascript来做这件事,但我的一些朋友不同意使用javascript库,因为他们不信任它。例如http://l2.io/ip.js?var=myip 所以我们需要所有这些代码作为服务器端代码。所以我在这本书中发现了很少的代码 但不幸的是,我没有得到预期的结果(它只返回本地主机IP)。谁能帮我解决这个问题 我试过下面的代码 string VisitorsIPAddr = st

我正在创建一个web应用程序,我需要一个功能,如果有人客户端登录到我的网站,则必须登录客户端的公共IP地址。我有一些javascript来做这件事,但我的一些朋友不同意使用javascript库,因为他们不信任它。例如
http://l2.io/ip.js?var=myip

所以我们需要所有这些代码作为服务器端代码。所以我在这本书中发现了很少的代码
但不幸的是,我没有得到预期的结果(它只返回本地主机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;
}
但这并没有为我提供公共知识产权。我需要部署它吗

HttpContext.Current.Request.UserHostAddress
这应该获得客户端的公共IP地址

编辑

所以你在寻找你自己机器的IP地址,就像世界其他地方看到的那样?? 这只在您托管在一个Intranet上时才真正重要,如果您使用
HttpContext.Current.Request.UserHostAddress
,客户端将位于同一个网络上,并且这是您将获得的唯一地址。在这种情况下,您需要使用一个查找api或其他东西。但是这样你就知道你网络的外部IP了

如果将其托管在internet上,则
HttpContext.Current.Request.UserHostAddress
将正常工作,因为每个客户端都将显示其外部IP

我猜它会显示127.0.0.1,因为您正在本地机器上测试,这将是它的环回地址

希望这有帮助

这应该获得客户端的公共IP地址

编辑

所以你在寻找你自己机器的IP地址,就像世界其他地方看到的那样?? 这只在您托管在一个Intranet上时才真正重要,如果您使用
HttpContext.Current.Request.UserHostAddress
,客户端将位于同一个网络上,并且这是您将获得的唯一地址。在这种情况下,您需要使用一个查找api或其他东西。但是这样你就知道你网络的外部IP了

如果将其托管在internet上,则
HttpContext.Current.Request.UserHostAddress
将正常工作,因为每个客户端都将显示其外部IP

我猜它会显示127.0.0.1,因为您正在本地机器上测试,这将是它的环回地址

希望这有帮助

这应该获得客户端的公共IP地址

编辑

所以你在寻找你自己机器的IP地址,就像世界其他地方看到的那样?? 这只在您托管在一个Intranet上时才真正重要,如果您使用
HttpContext.Current.Request.UserHostAddress
,客户端将位于同一个网络上,并且这是您将获得的唯一地址。在这种情况下,您需要使用一个查找api或其他东西。但是这样你就知道你网络的外部IP了

如果将其托管在internet上,则
HttpContext.Current.Request.UserHostAddress
将正常工作,因为每个客户端都将显示其外部IP

我猜它会显示127.0.0.1,因为您正在本地机器上测试,这将是它的环回地址

希望这有帮助

这应该获得客户端的公共IP地址

编辑

所以你在寻找你自己机器的IP地址,就像世界其他地方看到的那样?? 这只在您托管在一个Intranet上时才真正重要,如果您使用
HttpContext.Current.Request.UserHostAddress
,客户端将位于同一个网络上,并且这是您将获得的唯一地址。在这种情况下,您需要使用一个查找api或其他东西。但是这样你就知道你网络的外部IP了

如果将其托管在internet上,则
HttpContext.Current.Request.UserHostAddress
将正常工作,因为每个客户端都将显示其外部IP

我猜它会显示127.0.0.1,因为您正在本地机器上测试,这将是它的环回地址



希望这有帮助

什么代码返回本地主机IP?@RadioSpace like
HttpContext.Current.Request.ServerVariables[“HTTP_X_FORWARDED_FOR”]
总是空的“我没有得到预期的结果(它只返回本地主机IP)”-您需要解释在什么情况下会发生这种情况。否则,它将与您链接到的问题直接重复。@Riki-请注意,您关于缺少“x-forwarded-for”标题的评论并没有完全澄清您的问题。请求没有通过代理(或者代理不关心设置头)这一事实并不意味着什么…@AlexeiLevenkov我添加了一些我尝试过的代码,但代码只给出了127.0.0.1。我还将站点托管到IIS。什么代码返回本地主机IP?@RadioSpace like
HttpContext.Current.Request.ServerVariables[“HTTP\u X\u FORWARDED\u FOR”]
始终为空“我没有得到预期的结果(它只返回本地主机IP)”-您需要解释在什么情况下会发生这种情况。否则,它将与您链接到的问题直接重复。@Riki-请注意,您关于缺少“x-forwarded-for”标题的评论并没有完全澄清您的问题。请求没有通过代理(或者代理不关心设置头)这一事实并不意味着什么…@AlexeiLevenkov我添加了一些我尝试过的代码,但代码只给出了127.0.0.1。我还将站点托管到IIS。什么代码返回本地主机IP?@RadioSpace like
HttpContext.Current.Request.ServerVariables[“HTTP\u X\u FORWARDED\u FOR”]
始终为空“我没有得到预期的结果(它只返回本地主机IP)”-您需要解释在什么情况下会发生这种情况。否则,它将与您链接到的问题直接重复。@Riki-请注意,您关于缺少“x-forwarded-for”标题的评论并没有完全澄清您的问题。请求未通过代理的事实(或者代理不关心设置标题)