我想在asp.net web服务中使用客户端机器互联网IP地址,因为我正在使用以下代码
string IPaddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IPaddress))
IPaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(IPaddress))
IPaddress = HttpContext.Current.Request.UserHostAddress;
但是我在这里得到客户机本地IP但是*我正在寻找客户端机器的公共IP / Internet IP *
请帮助我,任何人。
答案 0 :(得分:0)
Request的几个属性提供客户端IP地址。 这是代码:
private string GetClientIpAddress (HttpRequestMessage request)
{
if ( request.Properties.ContainsKey("MS_HttpContext") )
{
return ((HttpContextWrapper) request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
if ( request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name) )
{
var prop = (RemoteEndpointMessageProperty) request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
if ( request.Headers.Contains("X-Forwarded-For") )
{
return request.Headers.GetValues("X-Forwarded-For").FirstOrDefault();
}
// Self-hosting using Owin. Add below code if you are using Owin communication listener
if ( request.Properties.ContainsKey("MS_OwinContext") )
{
var owinContext = (OwinContext) request.Properties["MS_OwinContext"];
if ( owinContext?.Request != null )
{
return owinContext.Request.RemoteIpAddress;
}
}
if ( HttpContext.Current != null )
{
return HttpContext.Current.Request.UserHostAddress;
}
return null;
}
希望它会奏效。 〜普拉萨德
答案 1 :(得分:0)
您将获得客户端连接到服务器的连接的IP地址。如果这是在同一网络中,您将看不到公共IP地址,因为连接不通过互联网路由。