获取远程主机的IP地址

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

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

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

回答:

可以这样做,但不是很容易发现-您需要使用传入请求中的属性包,而需要访问的属性取决于您是在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;

}

以上是 获取远程主机的IP地址 的全部内容, 来源链接: utcz.com/qa/398473.html

回到顶部