C# 获取客户端的公共IP地址
我正在创建一个web应用程序,我需要一个功能,如果有人客户端登录到我的网站,则必须登录客户端的公共IP地址。我有一些javascript来做这件事,但我的一些朋友不同意使用javascript库,因为他们不信任它。例如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
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 likeHttpContext.Current.Request.ServerVariables[“HTTP\u X\u FORWARDED\u FOR”]
始终为空“我没有得到预期的结果(它只返回本地主机IP)”-您需要解释在什么情况下会发生这种情况。否则,它将与您链接到的问题直接重复。@Riki-请注意,您关于缺少“x-forwarded-for”标题的评论并没有完全澄清您的问题。请求没有通过代理(或者代理不关心设置头)这一事实并不意味着什么…@AlexeiLevenkov我添加了一些我尝试过的代码,但代码只给出了127.0.0.1。我还将站点托管到IIS。什么代码返回本地主机IP?@RadioSpace likeHttpContext.Current.Request.ServerVariables[“HTTP\u X\u FORWARDED\u FOR”]
始终为空“我没有得到预期的结果(它只返回本地主机IP)”-您需要解释在什么情况下会发生这种情况。否则,它将与您链接到的问题直接重复。@Riki-请注意,您关于缺少“x-forwarded-for”标题的评论并没有完全澄清您的问题。请求未通过代理的事实(或者代理不关心设置标题)