zoukankan      html  css  js  c++  java
  • Asp.Net Core get client IP

    不废话,直接上代码,你懂得。

    public string GetRequestIP(bool tryUseXForwardHeader = true)
    {
        string ip = null;
    
        // todo support new "Forwarded" header (2014) https://en.wikipedia.org/wiki/X-Forwarded-For
    
        if (tryUseXForwardHeader)
            ip = GetHeaderValueAs<string>("X-Forwarded-For").SplitCsv().FirstOrDefault();
    
        // RemoteIpAddress is always null in DNX RC1 Update1 (bug).
        if (ip.IsNullOrWhitespace() && _httpContextAccessor.HttpContext?.Connection?.RemoteIpAddress != null)
            ip = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
    
        if (ip.IsNullOrWhitespace())
            ip = GetHeaderValueAs<string>("REMOTE_ADDR");
    
        // _httpContextAccessor.HttpContext?.Request?.Host this is the local host.
    
        if (ip.IsNullOrWhitespace())
            throw new Exception("Unable to determine caller's IP.");
    
        return ip;
    }
    
    public T GetHeaderValueAs<T>(string headerName)
    {
        StringValues values;
    
        if (_httpContextAccessor.HttpContext?.Request?.Headers?.TryGetValue(headerName, out values) ?? false)
        {
            string rawValues = values.ToString();   // writes out as Csv when there are multiple.
    
            if (!rawValues.IsNullOrEmpty())
                return (T)Convert.ChangeType(values.ToString(), typeof(T));
        }
        return default(T);
    }
    
    public static List<string> SplitCsv(this string csvList, bool nullOrWhitespaceInputReturnsNull = false)
    {
        if (string.IsNullOrWhiteSpace(csvList))
            return nullOrWhitespaceInputReturnsNull ? null : new List<string>();
    
        return csvList
            .TrimEnd(',')
            .Split(',')
            .AsEnumerable<string>()
            .Select(s => s.Trim())
            .ToList();
    }
    
    public static bool IsNullOrWhitespace(this string s)
    {
        return String.IsNullOrWhiteSpace(s);
    }
  • 相关阅读:
    第六章例6-5
    第六章例6-3
    第六章例6-2
    获取JVM默认编码以及获取其它JVM属性的方法(转)
    Java读取文本文件中文乱码问题
    highcharts highstock API js图形
    swing/swt可视化开发工具windowbuilder免费了
    swt 引入 js 问题
    swt 例子
    经验分享:开发SWT应用两点心得(转)
  • 原文地址:https://www.cnblogs.com/Javi/p/6514249.html
Copyright © 2011-2022 走看看