获取ip地址
1注册服务
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
2控制器依赖注入
private readonly IHttpContextAccessor _accessor; public ApiController( IHttpContextAccessor accessor) { _accessor = accessor; }
3方法内使用
string spbillCreateIP = _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
经过测试,获取的的内网的ip地址,我需要的是外网,所有还要改进一下
/// <summary> /// 获取客户端ip /// </summary> /// <param name="context"></param> /// <returns></returns> public static string GetClientUserIp(this HttpContext context) { var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); if (string.IsNullOrEmpty(ip)) { ip = context.Connection.RemoteIpAddress.ToString(); } return ip; }
在控制器调用
string ip = HttpContext.GetClientUserIp();