在ASP.NET Core中獲取客戶端IP地址
阿新 • • 發佈:2018-12-21
原文:
在ASP.NET Core中獲取客戶端IP地址
隨著ASP.NET的發展,有不同的方式從請求中訪問客戶端IP地址。WebForms和MVC Web應用程式只是訪問當前HTTP上下文的請求。
var ip = HttpContext.Current.Request.UserHostAddress;
或者只是直接引用當前的Request
var ip = Request.UserHostAddress;
但是,這在ASP.NET Core 2.0及更高版本中不起作用。您必須從ConfigureServices方法中的Startup.cs類中 注入 HttpContextAccessor例項。
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSingleton <IHttpContextAccessor,HttpContextAccessor>(); }
現在我們需要在我們的控制器建構函式中使用它並將其分配給控制器級別宣告的變數。這樣,它可以從控制器中的所有Actions訪問。
[Route("api/[controller]")] [ApiController] public class IPAddressController : ControllerBase { private readonly IHttpContextAccessor httpContextAccessor; public IPAddressController(IHttpContextAccessor httpContextAccessor) { this.httpContextAccessor = httpContextAccessor; } [HttpGet]public IActionResult Get() { return Content(this.httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString()); } }