一尘不染

获取远程主机的IP地址

c#

在ASP.NET中,有一个System.Web.HttpRequest类,其中包含ServerVariables可以从REMOTE_ADDR属性值提供IP地址的属性。

但是,我找不到从ASP.NET Web API获取远程主机IP地址的类似方法。

如何获得发出请求的远程主机的IP地址?


阅读 350

收藏
2020-05-19

共1个答案

一尘不染

可以这样做,但不是很容易发现-您需要使用传入请求中的属性包,而需要访问的属性取决于您是在IIS(网络托管)还是自托管下使用Web
API。下面的代码显示了如何完成此操作。

private string GetClientIp(HttpRequestMessage request)
{
    if (request.Properties.ContainsKey("MS_HttpContext"))
    {
        return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
    }

    if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
    {
        RemoteEndpointMessageProperty prop;
        prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
        return prop.Address;
    }

    return null;
}
2020-05-19