src/01_Utils/Utils.Web/Extensions/HttpContextAccessorExtensions.cs

(完整代码) 1KB

// ReSharper disable once CheckNamespace
namespace Microsoft.AspNetCore.Http;

public static class HttpContextAccessorExtensions
{
    /// <summary>
    /// 获取客户端IP地址(包含IPv和IPv6)
    /// </summary>
    /// <param name="accessor"></param>
    /// <returns></returns>
    public static string GetIP(this IHttpContextAccessor accessor)
    {
        if (accessor?.HttpContext?.Connection?.RemoteIpAddress == null)
            return "";

        return accessor.HttpContext.Connection.RemoteIpAddress.ToString();
    }

    /// <summary>
    /// 获取客户端IPv4地址
    /// </summary>
    /// <param name="accessor"></param>
    /// <returns></returns>
    public static string GetIPv4(this IHttpContextAccessor accessor)
    {
        if (accessor?.HttpContext?.Connection?.RemoteIpAddress == null)
            return "";

        return accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
    }

    /// <summary>
    /// 获取客户端IPv6地址
    /// </summary>
    /// <param name="accessor"></param>
    /// <returns></returns>
    public static string GetIPv6(this IHttpContextAccessor accessor)
    {
        if (accessor?.HttpContext?.Connection?.RemoteIpAddress == null)
            return "";

        return accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv6().ToString();
    }

    /// <summary>
    /// 获取客户端UserAgent
    /// </summary>
    /// <param name="accessor"></param>
    /// <returns></returns>
    public static string GetUserAgent(this IHttpContextAccessor accessor)
    {
        if (accessor?.HttpContext?.Request == null)
            return "";

        return accessor.HttpContext.Request.Headers["User-Agent"];
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。