Files
NetAdmin/src/backend/NetAdmin.Infrastructure/Extensions/HttpContextExtensions.cs
nsnail faaf5aa0fc feat: 登录日志独立存储 (#161)
请求日志自动分表
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-26 17:46:56 +08:00

33 lines
1.1 KiB
C#

namespace NetAdmin.Infrastructure.Extensions;
/// <summary>
/// HttpContext 扩展方法
/// </summary>
public static class HttpContextExtensions
{
/// <summary>
/// 获取客户端真实IP
/// </summary>
public static IPAddress GetRealIpAddress(this HttpContext me)
{
#pragma warning disable IDE0046
if (me.Request.Headers.TryGetValue(Chars.FLG_HTTP_HEADER_KEY_X_FORWARDED_FOR, out var ips1) &&
#pragma warning restore IDE0046
IPAddress.TryParse(ips1.FirstOrDefault()?.Split(',').FirstOrDefault(), out var ip1)) {
return ip1;
}
return me.Request.Headers.TryGetValue(Chars.FLG_HTTP_HEADER_KEY_X_REAL_IP, out var ips2) &&
IPAddress.TryParse(ips2.FirstOrDefault()?.Split(',').FirstOrDefault(), out var ip2)
? ip2
: me.Connection.RemoteIpAddress;
}
/// <summary>
/// 获取跟踪标识
/// </summary>
public static Guid GetTraceId(this HttpContext me)
{
return me.TraceIdentifier.Md5(Encoding.UTF8).Guid();
}
}