| using Microsoft.AspNetCore.Http; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
|   | 
| namespace WIDESEA_Core.Helper | 
| { | 
|     public static class HttpContextHelper | 
|     { | 
|         public static string GetUserIp(this HttpContext context) | 
|         { | 
|             string realIP = null; | 
|             string forwarded = null; | 
|             string remoteIpAddress = context.Connection.RemoteIpAddress.ToString(); | 
|             if (context.Request.Headers.ContainsKey("X-Real-IP")) | 
|             { | 
|                 realIP = context.Request.Headers["X-Real-IP"].ToString(); | 
|                 if (realIP != remoteIpAddress) | 
|                 { | 
|                     remoteIpAddress = realIP; | 
|                 } | 
|             } | 
|             if (context.Request.Headers.ContainsKey("X-Forwarded-For")) | 
|             { | 
|                 forwarded = context.Request.Headers["X-Forwarded-For"].ToString(); | 
|                 if (forwarded != remoteIpAddress) | 
|                 { | 
|                     remoteIpAddress = forwarded; | 
|                 } | 
|             } | 
|             return remoteIpAddress; | 
|         } | 
|     } | 
| } |