HttpContext.Current.Request.Url.Host它返回什么?

时间:2012-11-07 15:55:19

标签: c# asp.net http httpcontext

我的本​​地应用程序有一条路径:

http://localhost:950/m/pages/Searchresults.aspx?search=knife&filter=kitchen

但是当它进入集成环境或生产时,它将类似于

http://www.someshopping.com/m/pages/SearchResults.aspx?search=knife&filter=kitchen

对于某些情况,我需要通过:

www.someshopping.com

到我的XSLT文件和我正在使用的函数之一:

string currentURL = HttpContext.Current.Request.Url.Host;

这会在本地环境中返回“ localhost ”。相同的代码会回复我:

生产中

www.someshopping.com (我不需要 http://

只是不想冒任何风险。所以问这个愚蠢的问题。

3 个答案:

答案 0 :(得分:39)

是的,只要您在浏览器www.someshopping.com中键入的网址并且您没有使用网址重写,那么

string currentURL = HttpContext.Current.Request.Url.Host;

将返回www.someshopping.com

请注意本地调试环境与生产环境之间的区别

答案 1 :(得分:17)

Host属性将返回您在访问网站时使用的域名。因此,在您的开发环境中,因为您正在请求

http://localhost:950/m/pages/Searchresults.aspx?search=knife&filter=kitchen

它正在返回localhost。您可以这样拆分您的网址:

Protocol: http
Host: localhost
Port: 950
PathAndQuery: /m/pages/SearchResults.aspx?search=knight&filter=kitchen

答案 2 :(得分:6)

试试这个:

string callbackurl = Request.Url.Host != "localhost" 
    ? Request.Url.Host : Request.Url.Authority;

这适用于本地和生产环境。因为本地使用url和端口号是不可能使用Url.Host。