您好,我需要获取客户端IP,这是请求在web api中的一些方法,我已经尝试使用此代码从here,但它总是返回服务器本地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;
}
}
发布于 2014-04-11 05:08:42
如果您使用OWIN自托管NuGet包在Asp.Net 2.1上进行自托管,则可以使用以下代码:
private string getClientIp(HttpRequestMessage request = null)
{
if (request == null)
{
return null;
}
if (request.Properties.ContainsKey("MS_OwinContext"))
{
return ((OwinContext) request.Properties["MS_OwinContext"]).Request.RemoteIpAddress;
}
return null;
}
https://stackoverflow.com/questions/22532806
复制相似问题