【问题标题】:How to get client IP in .net core 3.1 API如何在 .net core 3.1 API 中获取客户端 IP
【发布时间】:2021-03-15 06:11:18
【问题描述】:

我正在拼命地尝试在我的 .Net 核心 Web API 中获取客户端的 IP。 我已经搜索了每个地方,每个教程,尝试了一切都没有成功......

如果这很重要,我会在 IIS 上运行 API。 我尝试过的每一种方法都重新调整了错误的 IP 地址(经常是某个 IP)。

有人知道解决办法吗?

【问题讨论】:

  • 如果你有客户的IP地址,你会用它做什么?例如,您通常无法启动其他连接。

标签: .net asp.net-core asp.net-core-webapi asp.net-core-3.1 .net-core-3.1


【解决方案1】:

你可以试试IHttpContextAccessor

public class HomeController : Controller
{
    IHttpContextAccessor httpContextAccessor;

    public HomeController(IHttpContextAccessor _h)
    {
        httpContextAccessor = _h;
    }

    public IActionResult Index()
    {
        var ip=httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();

        return View();
    }
}

在 starup.cs 中。

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

【讨论】:

  • 在负载均衡器或代理的情况下,我认为这是行不通的。它可能涵盖直接连接。
  • @Hostel,获取时可以保存在session或cookie中。
  • @Karney。感谢您的回答,不幸的是,两者都没有奏效。
  • @Damien_The_Unbeliever 其背后的想法是验证过程的一部分,允许来自“IP 白名单”的身份验证拒绝来自未知 IP 的请求
  • 我遇到了几个关于这个问题的线程,说它不再可能在 .Net core v2 及更高版本中获取客户端的 IP。找不到任何合理的解释为什么微软会阻止它。令人沮丧...
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 2020-05-16
  • 2022-07-27
  • 1970-01-01
  • 2023-03-19
  • 2015-04-24
  • 2017-01-05
相关资源
最近更新 更多