gpt4 book ai didi

c# - 如何在 ASP.NET Core 2.1 的 API 模型中获取用户 IP 地址?

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:09 24 4
gpt4 key购买 nike

当代码在 Web API Controller 中运行时,我在获取用户 IP 地址时没有问题,但在模型中我实际上无法使用:

this.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

我需要用户 IP 的原因是我需要通过第三方提供商提供的数据进行比较来定位其国家/地区。我可以在 Web API Controller 阶段执行此操作,但最好在模型中执行此操作,这样我就可以创建自定义注释来完成我的工作,因为我需要在多个模型中重用代码。

最佳答案

你在这里破坏了 SOLID。您的模型不适合了解 HttpContext 或如何从中检索远程 IP 地址。您要封装到模型中的逻辑只需要一个 IP 地址,因此 就是您应该给它的地址。这可以在模型类的构造函数中提供,也可以作为需要使用它的特定方法的参数。例如,创建如下方法:

public void GeolocateByIP(string ip)
{
// do geolocation
}

然后,在您的 Controller 操作中,您只需执行以下操作:

model.GeolocateByIP(HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString());

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

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