📜  asp.net core 获取请求ip地址 - C#(1)

📅  最后修改于: 2023-12-03 15:13:31.851000             🧑  作者: Mango

ASP.NET Core 获取请求IP地址 - C#

在ASP.NET Core中,获取请求IP地址可以通过HttpContext对象中的Connection.RemoteIpAddress属性来实现。

获取IP地址

以下代码演示如何获取请求IP地址

using Microsoft.AspNetCore.Mvc;
using System;

public class HomeController : Controller
{
    public IActionResult Index()
    {
        var ipAddress = HttpContext.Connection.RemoteIpAddress.ToString();
        
        return Content(ipAddress);
    }
}
处理代理IP地址

有些情况下,我们需要处理代理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地址。