我目前正在使用 MVC4 Web API,并且对于其中一个调用,我需要获取客户端的 IP 地址。这是我的设置...
客户端计算机无法访问互联网,只能访问我们的内部网
因为我正在进行跨域调用,所以我必须将 Web 服务器页面 iframe 到客户端 HTML 页面并发布消息。
一旦 Web 服务器接收到消息,它就会对 RESTful 服务进行 ajax 调用,然后 C# 从那里获取它......
所以我目前的目标是获取客户端机器的 IP 地址。经过一番研究,我发现了这个...
private string GetClientIp(HttpRequestMessage request)
{
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty prop;
prop = (RemoteEndpointMessageProperty)this.Request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
else
{
return null;
}
现在我意识到我不是最聪明的人,但是我会为 HTTPRequestMessage 请求的参数传递什么?
private string GetClientIp(HttpRequestMessage request)
有这样的例子吗?这可能吗?还是我应该为此采取另一种方法