我想捕获调用我的Web API服务的客户端的IP地址。 我试图在我创建的自定义身份验证过滤器中捕获该IP地址。
请求IP地址是否来自HttpActionContext
?
我似乎无法找到它。
验证过滤器是否是捕获发出请求的客户端的IP地址的错误位置?
答案 0 :(得分:32)
我最近发现了以下扩展方法:
public static string GetClientIpAddress(this HttpRequestMessage request)
{
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return IPAddress.Parse(((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress).ToString();
}
if (request.Properties.ContainsKey("MS_OwinContext"))
{
return IPAddress.Parse(((OwinContext)request.Properties["MS_OwinContext"]).Request.RemoteIpAddress).ToString();
}
return null;
}
您现在可以致电:
HttpActionContext.Request.GetClientIpAddress();