ASP Net Web API 2.1获取客户端IP地址

您好,我需要在Web

api中获取请求某种方法的客户端IP,我尝试从此处使用此代码,但它始终返回服务器本地IP,如何以正确的方式获取?

HttpContext.Current.Request.UserHostAddress;

来自其他问题:

public static class HttpRequestMessageExtensions

{

private const string HttpContext = "MS_HttpContext";

private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";

public static string GetClientIpAddress(this HttpRequestMessage request)

{

if (request.Properties.ContainsKey(HttpContext))

{

dynamic ctx = request.Properties[HttpContext];

if (ctx != null)

{

return ctx.Request.UserHostAddress;

}

}

if (request.Properties.ContainsKey(RemoteEndpointMessage))

{

dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];

if (remoteEndpoint != null)

{

return remoteEndpoint.Address;

}

}

return null;

}

}

回答:

以下链接可能会对您有所帮助。这是来自以下链接的代码。

参考:通过asp-net-web-api获取客户端IP

using System.Net.Http;

using System.ServiceModel.Channels;

using System.Web;

using System.Web.Http;

namespace Trikks.Controllers.Api

{

public class IpController : ApiController

{

public string GetIp()

{

return GetClientIp();

}

private string GetClientIp(HttpRequestMessage request = null)

{

request = request ?? Request;

if (request.Properties.ContainsKey("MS_HttpContext"))

{

return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;

}

else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))

{

RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];

return prop.Address;

}

else if (HttpContext.Current != null)

{

return HttpContext.Current.Request.UserHostAddress;

}

else

{

return null;

}

}

}

}

下面是另一种方法。

参考:如何访问客户端的IP地址

对于网络托管版本

string clientAddress = HttpContext.Current.Request.UserHostAddress;

对于自托管

object property;

Request.Properties.TryGetValue(typeof(RemoteEndpointMessageProperty).FullName, out property);

RemoteEndpointMessageProperty remoteProperty = property as RemoteEndpointMessageProperty;

以上是 ASP Net Web API 2.1获取客户端IP地址 的全部内容, 来源链接: utcz.com/qa/421248.html

回到顶部