客户端IP地址与ASP.NET 5应用程序和IIS日志不一致

时间:2015-01-27 22:25:34

标签: iis asp.net-core

我们正在编写一个ASP.NET 5(vNext)应用程序,该应用程序部分包括根据用户的IP地址对用户的位置进行地理编码。我们尝试使用以下代码从网络上的一些示例中获取客户端的IP地址:

var connection = context.HttpContext.GetFeature<IHttpConnectionFeature>();
if (connection != null) {
    clientIpAddress = connection.RemoteIpAddress.ToString();
}

当我们记录来自clientIpAddress的{​​{1}}时,我们发现IP地址不正确。

但是,我们注意到IIS正在捕获正确的客户端IP地址。我们通过IIS控制面板检查请求来看到这一点。

因此,在IIS请求和我们的应用程序代码之间,客户端的IP地址正在被修改,或者我们的应用程序代码无法正常使用IIS。或者IIS是否可能在解密客户端的IP地址方面执行额外的工作 - 我们需要在我们的应用程序代码中模仿的工作。

为什么客户端的IP地址在IIS请求日志中是正确的,但在上面的应用程序代码中不正确?我们如何在代码中获取正确的客户端IP地址?

相关软件版本:

  • ASP.NET 5(vNext)
  • KRE 1.0.0-beta2
  • IIS 8

更新我们在使用IHttpConnectionFeature检索IP地址的同一IIS服务器上运行了一个.NET 4.5应用程序,它还检索了正确的IP(IIS正在记录的是同一个IP) ,所以它似乎是新的.NET 5代码的一个问题。

1 个答案:

答案 0 :(得分:0)

这是由于Microsoft.AspNet.Loader.IIS包中的错误造成的。幸运的是,微软的人们迅速发布了修复程序。

有关更多上下文,请参阅Github问题:https://github.com/aspnet/HttpAbstractions/issues/181