2017-08-05 109 views
0

我已经在IIS上实际部署了我的asp网站,并且一切正常。我已经阅读了如何绕过代理服务器,但我仍然不确定如何去做。我想绕过网络上的代理服务器的原因是能够读取客户端的IP地址(代理服务器后面的IP地址)。坦率地说,我对这个主题没有太多的知识..绕过代理服务器,IIS上的ASP网站

我从MSDN读取到,您可以将代码行添加到Web.Config文件中以绕过代理服务器。但我不知道该输入什么或者如何使用这个defaultproxy标签。

Link

现在我只检索或者127.0.0.1是本地主机或设备的网络的外部IP地址,这是不是我想要的..

任何人都可以点我在正确的方向获取代理后面的IP地址?请欣赏任何帮助。谢谢。

代码我一直在尝试获得客户端的IP地址:

protected void getIP_Click(object sender, EventArgs e) 
{ 
    String hostName = System.Net.Dns.GetHostName(); 
    String clientIpAddressHostName = System.Net.Dns.GetHostAddresses(hostName).GetValue(0).ToString(); 
    IP1.Text = clientIpAddressHostName; 

    String clientIpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_HOST"].ToString(); 
    IP2.Text = clientIpAddress; 

    String ip = null; 

    if (String.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"])) 
    { 
     ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
    } 

    IP3.Text = ip; 

    String ipNext = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 
    IP4.Text = ipNext; 

    //String ipNextNext = HttpContext.Current.Request.UserHostAddress; 
    String ipNextNext = HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"].ToString(); 
    IP5.Text = ipNextNext; 

    String last = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString(); 
    IP6.Text = last; 

    Label2.Text = getIPAdd(); 

    try 
    { 
     String externalIP; 
     externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/"); 
     externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")).Matches(externalIP)[0].ToString(); 
     Label1.Text = externalIP; 
    } 
    catch (Exception ex) 
    { 
     logManager log = new logManager(); 
     log.addLog("IP Add", "IP Add", ex); 
    } 
} 

private String getIPAdd() 
{ 
    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

    if (!string.IsNullOrEmpty(ipAddress)) 
    { 
     string[] addresses = ipAddress.Split(','); 
     if (addresses.Length != 0) 
     { 
      return addresses[0]; 
     } 
    } 

    return context.Request.ServerVariables["REMOTE_ADDR"]; 
} 

结果,

Results

所需的详细信息:

details

+0

据我可以理解你在谈论nginx的那种有些反向代理。然后,查看真实客户端IP的唯一方法是将代理服务器配置为通过HTTP标头将其转发到您的应用程序。你知道你使用的代理服务器的名称吗? – vorou

+0

你好,再次vorou,是的,我在一个星期前的某处看到这个nginx单词..我如何检查?我实际上有我最后的网站演示,我要做的是在IIS上发布网站,然后运行它,然后回到我的问题获取客户端的内部IP地址在同一网络上。我的一位同事告诉我,仅仅绕过代理服务器就会得到我想要的东西。 – domster

+0

如果您的IIS与您访问的机器在同一网络上,应该可以直接访问它(并参见您的应用程序中的实际IP)。只要确保你通过安装了IIS的计算机的IP访问它(如果你不确定你可以终端进入并运行'ipconfig';查找以IPv4地址开头的行)。另外,您能否显示您用来获取客户端IP的代码? – vorou

回答

1

我只是用这个t Ø获取客户端IP地址:

HttpContext.Current.Request.UserHostAddress 

,我可以看到你有一个在你的代码也一样,但它的注释。 它的工作对我来说:

enter image description here

+0

嘿vorou对不起,我试图解决其他问题。我仍然得到:: 1是localhost ..我检查我的ipconfig在cmd它应该是192.168.1.118,但我没有得到.. – domster

+0

什么是您的应用程序部署在机器的IP地址? – vorou

+0

目前即时通讯使用iis express来运行我的网站,因为我还没有在本地iis上部署它..即使它是通过iis express,我也应该能够获得192.168.1.118? – domster

相关问题