文章出處

在ASP.NET中,使用負載均衡時,可以通過ServerVariables獲取客戶端的IP地址。

var ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];

但在ASP.NET Core中沒有ServerVariables的對應實現,需要換一種方式,可以在HttpContext.Request.Headers中獲取,需要注意的是key與ServerVariables方式不一樣,ServerVariables中是"HTTP_X_FORWARDED_FOR",HttpContext.Request.Headers中是"X-Forwarded-For",示例代碼如下:

var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();

完整的擴展方法實現如下:

public static class HttpContextExtension
{
    public static string GetUserIp(this HttpContext context)
    {
        var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
        if (string.IsNullOrEmpty(ip))
        {
            ip = context.Connection.RemoteIpAddress.ToString();
        }
        return ip;
    }
}

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()