如何获取客户端请求的URL在ASP.NET Web api中请求的位置?

时间:2016-04-06 04:57:59

标签: c# asp.net asp.net-web-api

在我的应用程序中,我希望从ASP.NET WEB API中读取客户端请求的URL。

示例:

https://xxx.test.com/test.html页面正在调用https://api.test.com/api/home/get/1 WEB方法。

请求的网址https://xxx.test.com/test.html需要从网络方法中读取。

以下代码返回IP地址。它不会返回域名网址。

// GET api/home/get/5
public string Get(int id)
{
return HttpContext.Current.Request.UserHostAddress;
}

请建议我。

先谢谢。

4 个答案:

答案 0 :(得分:1)

试试这个:

string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string host = HttpContext.Current.Request.Url.Host;
// localhost

答案 1 :(得分:1)

HttpContext.Current.Request.UrlReferrer.OriginalString。请注意,此数据是由客户设置的,因此您不能相信它是100%准确的。

答案 2 :(得分:0)

如果您在负载均衡器或其他反向代理之后,在询问HttpContext.Current.Request.UserHostAddress时,您将无法获得客户端的IP,而是获得负载均衡器的IP。在这种情况下,请查看HttpContext.Current.Request.Headers["X-Forwarded-For"]以获取浏览器的IP地址。请注意,如果您不在这些硬件之后,这是一个很好的攻击载体。

答案 3 :(得分:0)

您可以尝试HttpRequest.UrlReferrer。可以找到MSDN参考here