【发布时间】:2018-04-05 12:16:12
【问题描述】:
我正在尝试在我的注册页面上检索注册者的远程 IP 地址。
为了测试,我正在使用测试应用程序。 在控制器中;
private readonly IConfiguration _config;
private IHttpContextAccessor _accessor;
public HomeController(IConfiguration config, IHttpContextAccessor accessor)
{
_config = config;
_accessor = accessor;
}
在动作结果中
var ipAddress = _accessor.HttpContext.Connection.RemoteIpAddress;
该代码出错并显示错误消息
- 地址“ipAddress.Address”引发了“System.Net.Sockets.SocketException”类型的异常 long {System.Net.Sockets.SocketException} 消息“所引用的对象类型不支持尝试的操作”字符串
我没有在 Startup 中为 HttpContextAccessor 添加服务调用,因为在阅读它时,它是在 Core 2 中默认设置的。
更新: 我还尝试按照此博客文章的建议使用 X-Forwarded-For 中间件 X-Forwarded-For
但它仍然解析为 ::1 作为 IP 地址。很可能是因为该中间件不工作,Fiddler 没有在标题中显示 X-Forwarded-For
感谢任何关于为什么会发生此错误的帮助。
【问题讨论】:
-
这里的任何答案都可以提供帮助吗? stackoverflow.com/questions/28664686/…
标签: c# asp.net-core httpcontext