【问题标题】:Accessing Client IP Address (REMOTE_ADDR) in Asp.Net 5在 Asp.Net 5 中访问客户端 IP 地址(REMOTE_ADDR)
【发布时间】:2015-11-30 12:45:57
【问题描述】:

我正在尝试在 asp.net 中获取 ServerVariables["REMOTE_ADDR"]

这是我的旧代码(webapi 2):

private Logn GLog(System.Web.Routing.RequestContext requestContext)
{
    Ln Log = new LogInformation();
    Lg.IP = requestContext.HttpContext.Request.ServerVariables["REMOTE_ADDR"];
    Lg.RemoteIP = requestContext.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    ............................

据我所知,他们将“Routing.RequestContext”更改为

IHttpContextAccessor”在 vNext 版本中。

如何使用 IHttpContextAccessor 获得上述结果?

这给了我“ServerVariables”部分的错误:

private Logn GLog(IHttpContextAccessor requestContext)
{
    Ln Log = new LogInformation();
    Lg.IP = requestContext.HttpContext.Request.ServerVariables["REMOTE_ADDR"];
}

【问题讨论】:

    标签: c# asp.net asp.net-core


    【解决方案1】:

    您需要改用ConnectionInfo.RemoteIpAddress

    private Logn GLog(IHttpContextAccessor contextAccessor)
    {
        Ln Log = new LogInformation();
        Lg.IP = contextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
    
        // ...
    }
    

    【讨论】:

    • 谢谢你的回答。有没有机会找到“HTTP_X_FORWARDED_FOR”的替代品?
    • 你检查过contextAccessor.HttpContext.Request.Headers吗?它在逻辑上不相关,但我过去见过一些使用它的代码。
    • 生产 IIS 中 RemoteIpAddress 为空时,这是否解决了问题?
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 2017-05-04
    • 2016-09-25
    • 2013-09-01
    • 1970-01-01
    • 2012-09-16
    • 2016-01-21
    相关资源
    最近更新 更多