Asp.net core Asp.net核心远程IP地址获取本地IP(192.168.1.1)
我通过以下代码获取IP地址:Asp.net core Asp.net核心远程IP地址获取本地IP(192.168.1.1),asp.net-core,iis,clientip,Asp.net Core,Iis,Clientip,我通过以下代码获取IP地址: var remoteIpAddress = HttpContext?.Connection?.RemoteIpAddress?.ToString (); 当我在IIS上运行时,通过IP地址(我ISP网络的公共IP地址)进行访问,这一切正常 我在另一台服务器上托管,但映射到域名(由于IIS上有多个网站托管,IP无法访问) 只是没有获取客户端访问的远程IP地址就可以了 此外,我尝试了Microsoft推荐的以下代码,但它不起作用 services.Configur
var remoteIpAddress = HttpContext?.Connection?.RemoteIpAddress?.ToString ();
当我在IIS上运行时,通过IP地址(我ISP网络的公共IP地址)进行访问,这一切正常
我在另一台服务器上托管,但映射到域名(由于IIS上有多个网站托管,IP无法访问)
只是没有获取客户端访问的远程IP地址就可以了
此外,我尝试了Microsoft推荐的以下代码,但它不起作用
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
services.Configure(选项=>
{
options.ForwardedHeaders=
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
下面是一个在ASP.NET核心中获取客户端IP地址的解决方案
在Startup.cs类的ConfigureServices方法中注入HttpContextAccessor实例。现在使用Microsoft.AspNetCore.Http添加此引用
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
}
更新HomeController以在构造函数中插入IActionContextAccessor。尝试使用DI将IActionContextAccessor注入控制器的构造函数
public HomeController(ILogger logger, IActionContextAccessor accessor)
{
_logger = logger;
_accessor = accessor;
}
现在,在最后一步中,尝试从访问器变量中检索IP地址
private readonly IActionContextAccessor _accessor;
public IActionResult Index()
{
var ip = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString();
return View();
}
如果您不想使用DI,则始终可以直接在控制器中访问IP信息,如下所示
var ip = HttpContext.Connection.RemoteIpAddress.ToString();
下面是一个在ASP.NET内核中获取客户端IP地址的解决方案 在Startup.cs类的ConfigureServices方法中注入HttpContextAccessor实例。现在使用Microsoft.AspNetCore.Http添加此引用
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
}
更新HomeController以在构造函数中插入IActionContextAccessor。尝试使用DI将IActionContextAccessor注入控制器的构造函数
public HomeController(ILogger logger, IActionContextAccessor accessor)
{
_logger = logger;
_accessor = accessor;
}
现在,在最后一步中,尝试从访问器变量中检索IP地址
private readonly IActionContextAccessor _accessor;
public IActionResult Index()
{
var ip = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString();
return View();
}
如果您不想使用DI,则始终可以直接在控制器中访问IP信息,如下所示
var ip = HttpContext.Connection.RemoteIpAddress.ToString();
是的,这就是我正在做的,但它没有获得远程ip,而是路由器mikrotik ip,而不是使用以下链接中的发卡。你的意思是mikrotik正在阻止/更改远程ip地址吗?是的,检查我上一条评论中添加的链接。仔细阅读,希望它能解决你的问题。您是否有任何视频显示如何正确执行此操作是的,这是我正在做的,但它不是获取远程ip,而是路由器mikrotik ip,而不是使用以下链接中的发夹您的意思是mikrotik正在阻止/更改远程ip地址是的,检查我上一条评论中添加的链接。仔细阅读,希望它能解决你的问题。你有没有视频显示如何做到这一点