3

我们发现它Request.UserHostAddress在 ASP.NET Core (1.0 RC1) 中不可用,以及Request.ServerVariables["REMOTE_ADDR"]返回基本相同的 .

现在我们找到HttpContext.Connection.RemoteIpAddressHttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress成为替代品,但它真的是功能的 1:1 替代品吗?

我的意思是:Request.ServerVariables["REMOTE_ADDR"]只返回调用者的直接 IP 地址,而不是转发的客户端地址(因此你必须 get "X-FORWARDED-FOR")。这就是我们在场景中需要的:直接调用者地址,而不是转发地址。但是,如果 ASP.NET Core 对我们来说是正确的选择,我们找不到任何信息HttpContext.Connection.RemoteIpAddress(如果不是,还有什么选择?)。

4

1 回答 1

1

当您将该中间件插入管道时,您只会获得 X-Forwarded-For 替换它。所以要启用那个使用app.UseOverrideHeaders().

如果没有它,RemoteIpAddress 在大多数配置中将是 127.0.0.1,因为 Kestrel 前面会有 IIS。

于 2016-03-04T13:59:21.290 回答