RemoteIpAddress始终为null

A-S*_*ani 8 asp.net-core-mvc asp.net-core asp.net-core-1.0

var test1 = HttpContext.Features.Get<IHttpConnectionFeature>();
var test2 = HttpContext.Connection.RemoteIpAddress;
Run Code Online (Sandbox Code Playgroud)

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

当我在IIS 7.5(在VM上运行)上发布应用程序时.RemoteIpAddress总是null

我正在使用ASP.Net 5 RC 1.

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

我在以下问题中尝试了解决方案,但是我遇到了上面提到的问题:

blo*_*art 11

你所看到的是准确的,如果没有用的话.IIS处的连接终止,然后转发到v.next Web服务器Kestrel,因此与Web服务器的连接确实来自localhost.

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

  1. 添加Microsoft.AspNet.HttpOverrides
  2. 在你的Configure()方法中添加

        app.UseOverrideHeaders(new OverrideHeaderMiddlewareOptions
        {
            ForwardedOptions = ForwardedHeaders.XForwardedFor | 
                               ForwardedHeaders.XForwardedProto
        });
    
    Run Code Online (Sandbox Code Playgroud)

请注意,此包将在RC2中更改,以使其更安全.

  • nuget包现在是**Microsoft.AspNetCore.HttpOverrides**,配置方法是:**app.UseForwardedHeaders(...)** (8认同)

Dmi*_*lov 5

ASP.NET Core 2.0项目中,您需要添加包Microsoft.AspNetCore.HttpOverrides并将此代码添加到您的Configure方法中:

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
Run Code Online (Sandbox Code Playgroud)