我们发现ASP.NET核心(1.0 RC1)和Request.UserHostAddress
中没有Request.ServerVariables["REMOTE_ADDR"]
,它们的返回基本相同。
现在我们发现HttpContext.Connection.RemoteIpAddress
或HttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
是替代品,但是它真的是1:1替代功能吗?
我的意思是:Request.ServerVariables["REMOTE_ADDR"]
仅返回呼叫者的直接IP地址,而不是转发的客户端地址(因此您必须获得"X-FORWARDED-FOR"
)。这就是我们在场景中所需要的:直接来电地址,而不是转发地址。但是,如果ASP.NET Core中的HttpContext.Connection.RemoteIpAddress
是我们的正确选择(如果没有,那么替代方案是什么?)我们无法找到任何信息。
答案 0 :(得分:1)
您只能获得X-Forwarded - 当您将该中间件连接到管道中时替换它。因此,要启用app.UseOverrideHeaders()
。
没有它在大多数配置中RemoteIpAddress将是127.0.0.1,因为你将在Kestrel前面安装IIS。