【发布时间】:2018-06-30 15:57:12
【问题描述】:
我正在使用 Microsoft Visual Studio 2017 提供的 Angular 模板开发 ASP.Net Core 2.1。我的客户端应用程序运行良好。用户认证竞争后,我想启动存储客户端用户 IP 地址的用户会话管理。我已经在互联网上搜索过这个,但到目前为止还没有找到任何解决方案。
以下是我已经访问过的一些参考链接:
How do I get client IP address in ASP.NET CORE?
Get Client IP Address in ASP.NET Core 2.0
Get a user remote IP Address in ASP.Net Core
在我的 ValuesController.cs 中,我还尝试了以下代码:
private IHttpContextAccessor _accessor;
public ValuesController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public IEnumerable<string> Get()
{
var ip = Request.HttpContext.Connection.RemoteIpAddress.ToString();
return new string[] { ip, "value2" };
}
其中 ip 变量我得到空值并出现此错误
Request.HttpContext.Connection.RemoteIpAddress.Address 抛出类型为“System.Net.Sockets.SocketException”的异常
请告诉我如何在 ASP.NET Core 2.1 中获取客户端 IP 地址。
【问题讨论】:
-
如果你使用
_accessor.HttpContext.Connection.RemoteIpAddress也是null吗? -
您是否尝试通过 IP 地址来识别用户?那是不可靠的。您网站上的两个人在图书馆、咖啡店、酒店等处连接到公共 wifi 将具有相同的 IP 地址。
-
你怎么称呼这段代码?你应该可以在控制器中只做
HttpContext.Connection.RemoteIpAddress。无需通过Request或在那里使用 HttpContextAccessor。 -
如何解析远程ip地址与宿主环境的具体情况有很大关系docs.microsoft.com/en-us/aspnet/core/host-and-deploy/…
-
@poke 你的解决方案在我的情况下不起作用。
标签: c# asp.net-core