加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET核心:如何获取远程IP地址?

发布时间:2020-12-16 03:35:27 所属栏目:asp.Net 来源:网络整理
导读:我尝试获取远程(客户端)IP地址: var ip = httpContext.Features.GetIHttpConnectionFeature()?.RemoteIpAddress 但它只适用于本地请求(它将返回:: 1值) 当我从远程计算机加载页面时,该值为null.我调查过,在这种情况下,Features集合中没有IHttpConnectionFea
我尝试获取远程(客户端)IP地址:

var ip = httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress

但它只适用于本地请求(它将返回:: 1值)

当我从远程计算机加载页面时,该值为null.我调查过,在这种情况下,Features集合中没有IHttpConnectionFeature.

为什么?以及如何正确获取远程IP地址?

解决方法

我知道这篇文章很老了,但是我来到这里寻找同样的问题,最终我做到了这一点:

在project.json上添加依赖项:

"Microsoft.AspNetCore.HttpOverrides": "1.0.0"

在Startup.cs上,在Configure方法中添加:

app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor |
            ForwardedHeaders.XForwardedProto
        });

而且当然:

using Microsoft.AspNetCore.HttpOverrides;

然后,我得到了这样的ip:

Request.HttpContext.Connection.RemoteIpAddress

在我的情况下,在VS中进行调试时我总是得到IpV6 localhost,但是当部署在IIS上时,我总是得到远程IP.

一些有用的链接:
How do I get client IP address in ASP.NET CORE?和RemoteIpAddress is always null

:: 1可能是因为:

Connections termination at IIS,which then forwards to Kestrel,the v.next web server,so connections to the web server are indeed from localhost. (07002)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读