在Web API身份验证筛选器中捕获请求IP地址

G-M*_*Man 12 asp.net-web-api

我想捕获调用我的Web API服务的客户端的IP地址.我试图在我创建的自定义身份验证筛选器中捕获该IP地址.

请求IP地址是否可用HttpActionContext

我似乎找不到它.

身份验证过滤器是否在哪里捕获发出请求的客户端的IP地址?

Mic*_*elS 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;
}
Run Code Online (Sandbox Code Playgroud)

你现在可以打电话:

HttpActionContext.Request.GetClientIpAddress();
Run Code Online (Sandbox Code Playgroud)