iis - ASP.NET 5 应用程序和 IIS 日志之间的客户端 IP 地址不一致

标签 iis asp.net-core

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

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

当我们登录 clientIpAddress来自 IHttpConnectionFeature ,我们发现IP地址不正确。

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

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

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

相关软件版本:
  • ASP.NET 5 (vNext)
  • KRE 1.0.0-beta2
  • IIS 8

  • 更新:我们在使用 Request.UserHostAddress 检索 IP 地址的同一台 IIS 服务器上运行了一个 .NET 4.5 应用程序。并且它还检索到了正确的 IP(IIS 正在记录相同的 IP),因此这似乎是新的 .NET 5 代码的问题。

    最佳答案

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

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

    关于iis - ASP.NET 5 应用程序和 IIS 日志之间的客户端 IP 地址不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28181193/

    相关文章:

    iis - 导航到站点根目录时,我看到 IIS 启动画面

    c# - 无法在 IIS 上读取 excel 文件

    c# - 搭建 Db Context 并自动移除 OnConfiguring 方法

    asp.net-core - asp-route-id 不传递参数值

    css - 从文件系统或 IIS 提供时,Font Awesome 图标不起作用

    asp.net - IIS 首次运行需要很长时间

    c# - ASP.Net Core Tag Helper 链接忽略当前区域性

    .Net Core 项目中的 .Net Framework Nuget 包

    iis - 如何将应用程序从默认网站移动到它自己的网站上?

    c# - ASP.NET Core MVC 中的 Crystal Reports 错误。无法加载文件