gpt4 book ai didi

c# - 如何在 ASP.NET Core 2.1 中获取客户端 IP 地址

转载 作者:IT王子 更新时间:2023-10-29 04:44:12 28 4
gpt4 key购买 nike

我正在使用 Microsoft Visual Studio 2017 提供的 Angular 模板开发 ASP.Net Core 2.1。我的客户端应用程序运行良好。用户身份验证竞争后,我想启动用户 session 管理,我在其中存储客户端用户 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 threw an exception of Type 'System.Net.Sockets.SocketException'

enter image description here

enter image description here

能否请您告诉我如何在 ASP.NET Core 2.1 中获取客户端 IP 地址。

最佳答案

在您的 Startup.cs 中,确保您有 ConfigureServices 方法,传入 IServiceCollection,然后将 IHttpContextAccessor 注册为单例如下:

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}

在您的 Startup.cs 文件中注册了 IHttpContextAccessor 之后,您可以将 IHttpContextAccessor 注入(inject)到您的 Controller 类中并像这样使用它:

private IHttpContextAccessor _accessor;

public ValuesController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}

public IEnumerable<string> Get()
{
var ip = _accessor.HttpContext?.Connection?.RemoteIpAddress?.ToString();
return new string[] { ip, "value2" };
}

关于c# - 如何在 ASP.NET Core 2.1 中获取客户端 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com