小编Cha*_*has的帖子

当服务器位于 AWS ELB 之后时,ASP.NET Core MVC 应用程序如何获取客户端 IP 地址?

我正在 AWS 上的一个包含 ELB 的 Elastic Beanstalk 环境中运行一个 ASP.NET Core MVC 应用程序。

我使用此代码来获取客户端的 IP 地址:

HttpContext.Connection.RemoteIpAddress.ToString()
Run Code Online (Sandbox Code Playgroud)

但是,这会返回负载均衡器的 IP 地址,而不是客户端的 IP 地址。我相信RemoteIPAddress返回存储在 X-Forwarded-For HTTP 标头中的地址,理论上应该是客户端 IP,但它不是。

所以我按照说明,根据这些说明为 ELB 启用代理协议。

但仍然没有运气。将RemoteIPAddress仍然返回相同的IP ELB,而不是客户端IP。

在 ELB 后面的 AWS 上运行 ASP.NET Core MVC 应用程序时,有没有人能够获得客户端 IP?如果是这样,如何?

任何帮助将不胜感激。

asp.net-mvc ip-address amazon-web-services amazon-elb

6
推荐指数
1
解决办法
729
查看次数

如何阻止 HttpRequestMessage 将 %3A 取消编码为请求 URI 中的冒号(asp.net 核心)

使用此代码...

using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, 
"https://example.com/?var=a%3Ab%3Dc%26d%3Fe")
{
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

...request.RequestUri现在具有值“ https://example.com/?var=a:b%3Dc%26d%3Fe

请注意 %3A 已取消编码为冒号字符,但所有其他编码字符仍保持编码状态。

如何防止 %3A 像所有其他编码字符一样被取消编码?

对于上下文,我正在调用外部 API。冒号抛出错误。我无法控制外部 API,因此需要找到一种符合 API 编码期望的方法。

.net-core .net-core-1.1

2
推荐指数
1
解决办法
463
查看次数