随着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());
- }
- }
复制代码
来源:https://blog.csdn.net/qq_39110534/article/details/85241572 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |