我已经尝试了下面解释的东西,不知何故,IP地址总是::1,在本地和服务器端,
下面是代码,我试过了;
m_CallerIP = string.IsNullOrEmpty(req.ServerVariables["HTTP_CLIENT_IP"]) ? req.UserHostAddress : req.ServerVariables["HTTP_CLIENT_IP"];
string Port = string.IsNullOrEmpty(req.ServerVariables["HTTP_CLIENTPORT"]) ? req["HTTP_CLIENTPORT"] : req.ServerVariables["CLIENTPORT"];
string asd2 = String.IsNullOrEmpty(req.ServerVariables["REMOTE_ADDR"]) ? req.UserHostAddress : req.ServerVariables["REMOTE_ADDR"];
string asd23 = String.IsNullOrEmpty(req.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? req.UserHostAddress : req.ServerVariables["HTTP_X_FORWARDED_FOR"];
string asd4 = req.UserHostAddress;
IPAddress address = IPAddress.Parse(m_CallerIP);
IPAddress address1 = IPAddress.Parse(asd2);
IPAddress address2 = IPAddress.Parse(asd23);
IPAddress address3 = IPAddress.Parse(asd4);
有没有人知道为什么和如何解决这个问题?
提前感谢!
发布于 2017-08-23 19:35:03
下面的代码适用于我。
当我在localhost中运行应用程序时,我总是得到::1。但是,它在服务器端运行得很好。该应用程序正在Azure中运行。
string ip = "";
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ip))
ip = ip.Split(',').Last().Trim();
else
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (ip == "::1")
ip = "";
if (ip.IndexOf(':') > 0)
ip = ip.Substring(0, ip.IndexOf(':'));
return ip;
https://stackoverflow.com/questions/45190380
复制相似问题