var test1 = HttpContext.Features.Get<IHttpConnectionFeature>();
var test2 = HttpContext.Connection.RemoteIpAddress;

在IISExpress上本地运行应用程序时,这两行正确返回值0:0:1

当我在IIS 7.5(在VM上运行)上发布应用程序时。 RemoteIpAddress始终是null
我正在使用ASP.Net 5 RC 1。

如何在ASP.NET 5应用程序中获取客户端的IP地址?

我尝试了以下问题的解决方案,但是我遇到了上述问题:
  • Question 1
  • Question 2
  • 最佳答案

    您所看到的是准确的,即使没有用。 IIS处的连接终止,然后将其转发到v.next Web服务器Kestrel,因此与Web服务器的连接确实来自本地主机。

    您需要做的是启用对X-Forwarded-For的支持

  • 添加Microsoft.AspNet.HttpOverrides
  • 在您的Configure()方法中添加
        app.UseOverrideHeaders(new OverrideHeaderMiddlewareOptions
        {
            ForwardedOptions = ForwardedHeaders.XForwardedFor |
                               ForwardedHeaders.XForwardedProto
        });
    

  • 请注意,此软件包将在RC2中更改,以使其使用更安全。

    10-07 15:18