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;
  • 相关阅读:
    2015 ccpc 南阳国赛
    CF 812
    多校 2009 7
    2015 长春
    多校 2009 4
    selenium 对https网站(加密证书)进行自动化测试
    selenium配置
    2016.05.17开通自己的博客
    pod存在,但是deployment和statefulset不存在
    Eclipse设置代码格式化使用空格代替TAB
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5519245.html
Copyright © 2011-2022 走看看