現在、MVC4 Web API を使用しており、呼び出しの 1 つでクライアントの IP アドレスを取得する必要があります。これが私のセットアップです...
クライアントコンピューターはインターネットにアクセスできず、イントラネットにのみアクセスできます
クロス ドメイン呼び出しを行っているため、Web サーバー ページをクライアント HTML ページに iframe し、メッセージを投稿する必要があります。
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)
これの例はありますか?これは可能ですか?または、これに対して取るべき別のアプローチがありますか