我正在使用ASP.Net core 2.0 Web应用程序,并将其部署在Azure上。我需要做的是获取客户端IP地址。为此,我在整个Internet上进行搜索,发现服务器变量对此有所帮助。
因此,我从这里找到此代码以使用以下方法获取客户端IP:
string IpAddress = this.Request.ServerVariables["REMOTE_ADDR"];
但是,当我尝试上面的代码时,它显示了一个错误“ HttpRequest不包含服务器变量的定义”
我也尝试过这段代码:
var ip0 = HttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress;
Run Code Online (Sandbox Code Playgroud)
代码定义
RemoteIpAddress发出请求的客户端的IP地址。请注意,这可能是针对代理而不是最终用户。
上面的代码获取IP地址,但它不是一个clientip,每次当我通过控制器访问上面的代码时,它都会刷新IP。也许这是一个Azure Web服务代理,每次都会发出get请求。
在ASP.Net Core 2.x中访问服务器变量的正确方法是什么?
在现有的.Net网站中,可以使用服务器变量访问
HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]
Run Code Online (Sandbox Code Playgroud)
如何访问AspnetCore 1.0 Web应用程序中的ServerVariables?
在控制器内部调试时,this.HttpContext.Features不包含IServerVariablesFeature.
server-variables httpcontext request.servervariables asp.net-core