首页 > 代码库 > webapi获取IP的方式

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;

webapi获取IP的方式