Asp. net core 2.0 mvc приложение получает IP-адрес клиента с опцией балансировки нагрузки - PullRequest
0 голосов
/ 07 января 2020

Я не могу получить IP-адрес клиента с помощью приложения net core 2.0.

Я использовал приведенный ниже код в файле startup.cs.

Я использовал приведенный ниже код в homecontriller Файл .cs.

Я получаю remoteIpAddress 1.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();
}

1 Ответ

0 голосов
/ 07 января 2020

В проекте. 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
...