我之前使用了以下代码来获取asp.net的客户端ip,但是在我转移到VDS之后,这个函数开始只返回我的子网掩码178.18.198.1或178.18.198.2。 任何人都可以帮我解决这个问题吗?
Private Function GetIPAddress() As String
Dim sIPAddress As String = Nothing
sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If String.IsNullOrEmpty(sIPAddress) Then
sIPAddress = Request.ServerVariables("REMOTE_ADDR")
End If
Return sIPAddress
End Function
修改
发现类似问题here:
已经部署了许多2008 32位 使用Citrix的标准Web服务器 netscaler isapi(netscaler是一个 负载均衡器),在所有情况下 客户端IP地址记录在 标准的IIS日志。在一个新项目我 被要求部署2008 R2, 配置IIS 7.5与 我以前如何配置IIS 7.0, 但是这次客户端ip是 返回负载均衡器地址 日志。这是奇怪的部分,我 安装“高级日志记录”,它是 显示客户端IP地址 正确,所以isapi正在做它 工作。用Google搜索了这个死神 并且可以使用一些建议。
我还发现了ISAPI过滤器模块,但无法使其正常工作:devcentral.f5.com/x_forwarded_for_log_filter_for_windows_servers
答案 0 :(得分:4)
在源代码文件中使用HTTP_CLIENT_IP而不是REMOTE_ADDR解决了问题。
通过按建议here安装IIS高级日志记录模块,解决了IIS日志问题。安装高级日志记录后,我收到错误“503:Service Unavailable”,但是通过向Program Files \ IIS文件夹的Everyone授予读写权限并启动了失败的应用程序池来解决此问题。
另一个建议here的解决方案是:
在NetScaler下“加载 平衡“,”服务“然后在 高级选项卡,在设置下,检查 “使用源IP”框和 然后在Header字段中输入“Client IP” “CLIENT-IP”
答案 1 :(得分:0)
我用
IP.Text = Request.UserHostAddress;
在C#中。这对你有用吗?