文章出處
文章列表
在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; } }
文章列表
全站熱搜