【问题标题】:HttpContext.Current.Request.Url.Host what it returns?HttpContext.Current.Request.Url.Host 它返回什么?
【发布时间】:2012-10-27 17:18:19
【问题描述】:

我有一个具有路径的本地应用程序:

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://

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

【问题讨论】:

  • 也许应该是string host = HttpContext.Current.Request.Url.Host;

标签: c# asp.net http httpcontext


【解决方案1】:

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

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

将返回www.someshopping.com

注意本地调试环境和生产环境的区别

【讨论】:

【解决方案2】:

试试这个:

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

这将适用于本地和生产环境。因为本地使用带有端口号的 url,所以使用 Url.Host 是可能的。

【讨论】:

  • 你应该总是使用Request.IsLocal来检查它是否是一个本地请求,不需要比较Request.Url.Host,因为如果我真的写http://LocalHost/...那是假的
【解决方案3】:

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

【讨论】:

  • 所以我的问题是这会在生产环境中返回 www.someshopping.com 吗? :)
  • 是的,假设您在生产中请求的 URL 是 www.someshopping.com。
猜你喜欢
  • 1970-01-01
  • 2021-02-03
  • 2012-11-14
  • 2013-11-24
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2014-07-08
相关资源
最近更新 更多