Asp.net 核心 2.0 MVC 应用程序使用负载均衡器选项获取客户端 IP 地址



我无法使用 .net core 2.0 应用程序获取客户端 IP 地址。

我在启动.cs文件中使用了以下代码。

我在homecontriller.cs文件中使用了下面的代码。

我正在得到远程IP地址是本地的1.0.0.0.0。 当我部署在服务器中时,我得到了服务器 IP 地址,但我想显示客户端 IP 地址。 你能帮忙吗?谢谢。

services.Configure<ForwardedHeadersOptions> (options => {
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor> ();
services.AddHttpContextAccessor();
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor> ();

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
app.UseForwardedHeaders(new ForwardedHeadersOptions {
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
}
public IActionResult Index() {
string remoteIpAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
if (Request.Headers.ContainsKey("X-Forwarded-For")) {
remoteIpAddress = Request.Headers["X-Forwarded-For"];
}
ViewBag.ip1 = remoteIpAddress.ToString();
return View();
}

在 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

相关内容

最新更新