URL的ASP.NET绝对路径如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

为了让webapp更容易与另一个应用程序在不同的服务器上共享文件,我在母版页中使用了一个基础href标签。正如很多人发现的那样,这会打破webform路径。我有一个工作的表单适配器类,但不知道如何获得该网址的绝对路径。目前,我的程序被硬编码为使用类似于:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

值得注意的是,我目前正在对本地IIS服务器进行测试,所以我尝试使用很多东西,以便绝对路径不包含域名(我的本地IIS不可见)外部)。这意味着它不是一个绝对路径,因此基础href将破坏它。

有没有一种好的方法来处理这个问题,以便在没有硬编码的情况下在本地工作,但是在上传到服务器时也能正常工作?我宁愿避免任何涉及在服务器端副本上做不同的事情。

是的,我意识到我可以在本地和服务器上使用单独的web.config文件来获取此信息,但这很丑陋,违反了DRY。

提问于
用户回答回答于

我以前用过这个:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;
用户回答回答于

旧文章,但这里是另一个稍微不那么冗长的方法

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

扫码关注云+社区