zoukankan      html  css  js  c++  java
  • webapi获取请求地址的IP

    using System.Net.Http;
    
    public static class HttpRequestMessageExtensions
    {
        private const string HttpContext = "MS_HttpContext";
        private const string RemoteEndpointMessage =
            "System.ServiceModel.Channels.RemoteEndpointMessageProperty";
        private const string OwinContext = "MS_OwinContext";
    
        public static string GetClientIpAddress(this HttpRequestMessage request)
        {
           // Web-hosting. Needs reference to System.Web.dll
           if (request.Properties.ContainsKey(HttpContext))
           {
               dynamic ctx = request.Properties[HttpContext];
               if (ctx != null)
               {
                   return ctx.Request.UserHostAddress;
               }
           }
    
           // Self-hosting. Needs reference to System.ServiceModel.dll. 
           if (request.Properties.ContainsKey(RemoteEndpointMessage))
           {
                dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
                if (remoteEndpoint != null)
                {
                    return remoteEndpoint.Address;
                }
            }
    
           // Self-hosting using Owin. Needs reference to Microsoft.Owin.dll. 
           if (request.Properties.ContainsKey(OwinContext))
           {
               dynamic owinContext = request.Properties[OwinContext];
               if (owinContext != null)
               {
                   return owinContext.Request.RemoteIpAddress;
               }
           }
    
            return null;
        }
    }

    References required:

    • HttpContextWrapper - System.Web.dll
    • RemoteEndpointMessageProperty - System.ServiceModel.dll
    • OwinContext - Microsoft.Owin.dll (you will have it already if you use Owin package)

    第二种:
    ((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
  • 相关阅读:
    浏览器 显示flash问题
    类型参数的约束
    C# FUNC 应用
    c#抽奖系统
    3D基础数学小结
    google应用之字体引用
    MYSQL启动参数
    chrome中你不知道的快捷方式
    SQL Server 2008在添加用户时弹出15195错误
    Hibernate Maven Missing artifact javax.transaction:jta:jar:1.0.1B
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5519245.html
Copyright © 2011-2022 走看看