📅  最后修改于: 2023-12-03 15:13:31.851000             🧑  作者: Mango
在ASP.NET Core中,获取请求IP地址可以通过HttpContext对象中的Connection.RemoteIpAddress属性来实现。
以下代码演示如何获取请求IP地址
using Microsoft.AspNetCore.Mvc;
using System;
public class HomeController : Controller
{
public IActionResult Index()
{
var ipAddress = HttpContext.Connection.RemoteIpAddress.ToString();
return Content(ipAddress);
}
}
有些情况下,我们需要处理代理IP地址。例如,使用Nginx作为反向代理服务器的情况下。
以下代码演示如何处理代理IP地址
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
public class HomeController : Controller
{
private IHttpContextAccessor _httpContextAccessor;
public HomeController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public IActionResult Index()
{
// 获取代理IP地址
var ipAddress = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
// 获取真实IP地址
var forwardedForHeader = _httpContextAccessor.HttpContext.Request.Headers["X-Forwarded-For"];
if (!string.IsNullOrEmpty(forwardedForHeader))
{
var forwardedIps = forwardedForHeader.ToString().Split(new char[] { ',' },
StringSplitOptions.RemoveEmptyEntries);
if (forwardedIps.Length > 0)
{
ipAddress = forwardedIps[0];
}
}
return Content(ipAddress);
}
}
通过使用HttpContext对象中的Connection.RemoteIpAddress属性,我们可以轻松地获取请求IP地址。如果涉及到代理IP地址,使用X-Forwarded-For头来获取真实客户端IP地址。