获取请求的客户端的IP地址(SOAP消息)

问题描述:

我正在创建soap消息并需要找到请求的客户端IP。 我一直在寻找一种方法来查找客户IP,但仍然不能。 你可以让我知道如何从客户端获取请求时如何找到客户端IP?获取请求的客户端的IP地址(SOAP消息)

+0

你为什么要手工创建SOAP消息?为什么不使用“添加服务参考”? – 2013-04-09 00:40:49

所以,你希望能够看看客户端使用Web服务的IP地址,从服务中?

您可以创建这样一个类,检查你的一些服务器变量,其中一些来自HTTP报头中提取数据的。我发现,刚刚在看HTTP_X_FORWARDED_FOR和REMOTE_ADDR的伎俩(例如在C#):

public class IP 
{ 
    public static String UserHostAddress { get { return HttpContext.Current.Request.UserHostAddress; } } 
    public static String REMOTE_ADDR { get { return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } } 
    public static String HTTP_X_FORWARDED_FOR { get { return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } } 
    public static String HTTP_CLIENT_IP { get { return HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; } } 
    public static String HTTP_X_FORWARDED { get { return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED"]; } } 
    public static String HTTP_X_CLUSTER_CLIENT_IP { get { return HttpContext.Current.Request.ServerVariables["HTTP_X_CLUSTER_CLIENT_IP"]; } } 
    public static String HTTP_FORWARDED_FOR { get { return HttpContext.Current.Request.ServerVariables["HTTP_FORWARDED_FOR"]; } } 
    public static String HTTP_FORWARDED { get { return HttpContext.Current.Request.ServerVariables["HTTP_FORWARDED"]; } } 

    public static String IP_ADDRESS 
    { 
     get 
     { 
      if (HTTP_X_FORWARDED_FOR != null) 
      { 
       return HTTP_X_FORWARDED_FOR; 
      } 

      return REMOTE_ADDR; 
     } 
    } 
} 
+0

-1:仅适用于ASP.NET Web服务,对不对? – 2013-04-09 00:40:31

+0

对,我刚刚意识到我没有解释他问的是正确的。 – digiliooo 2013-04-09 00:46:14