c# - ASP.NET Core 3.1 - 如何获取客户端的 IP 地址?
问题描述
我有一个 Razor 页面 Web 应用程序,并且正在记录用户的 IP 地址。出于某种原因,它返回的是 IP 地址,而不是客户端的用户 IP 地址。我相信它可能会从服务器返回IP?
注意: 我已经在所有其他 ASP.NET Web 窗体应用程序中添加了用户登录,并且它正在记录正确的 IP。这是我们唯一的 ASP.NET Core 应用程序,它返回一个不同的 IP。
我是否在 ConfigureServices 方法中遗漏了一些阻止它获取用户 IP 地址的内容?
我在启动类中的 ConfigureServices 方法中的代码:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddAntiforgery(option =>
{
option.HeaderName = "XSRF-TOKEN";
option.SuppressXFrameOptionsHeader = false;
});
services.AddSession();
services.AddMemoryCache();
}
我也在 Configure 方法中调用 UserForwardedHeaders 方法,如下所示:
app.UseForwardedHeaders();
我在检索 IP 地址时使用 RemoteIPAddress:
HttpContext.Connection.RemoteIpAddress.ToString()
解决方案
var ipAddr = HttpContext.Connection.RemoteIpAddress.ToString();
{::1}
当您在本地执行代码时,这将返回。部署到测试或生产服务器后,它将获取您客户端的 IP
var deviceName = Dns.GetHostEntry(HttpContext.Connection.RemoteIpAddress).HostName;
它用于查找 Intranet 应用程序的计算机名称。
推荐阅读
- spring - @Before Advice 注解未在 Spring 应用程序中应用
- python - 我可以使用 Sympy 推导出电报方程吗?
- tensorflow - TensorFlow Hub 模块重用
- python - 如何在 django python 的管理页面中添加一个类?
- mpeg2-ts - mpeg-2 ts PCR 33 位 90 kHz 基础和 9 位 27 MHz 扩展位......这是什么意思?
- angular - 为什么要将“哑”组件提取到 index.ts ngModule 中?
- php - 处理不同的输入日期格式以插入 MySQL
- spring - 从spring创建postgres数据库时关系不存在
- forms - Laravel 集体自定义表单,动作 Controller@update 未定义
- c# - SQL Server(本地数据库)的连接字符串