Asp.Net URL的绝对path

为了使Web应用程序能够与另一个应用程序在不同的服务器上共享文件,我在母版页中使用了一个基本的href标记。 正如很多人所发现的那样,这打破了webform的path。 我有一个工作的表单适配器类,但不知道如何得到的url的绝对path。 目前,我的程序是硬编码使用类似于:

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

值得注意的是,我目前正在testing我的本地IIS服务器,所以有一个奇怪的趋势,我尝试了很多东西,以绝对path不包括域名(我的本地IIS不可见外部)。 这意味着它不是一个绝对的path,因此基础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; 

旧的post,但这里是另一个稍微不详细的方法

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

我用了以下,它为我的客户端和服务器。

 string surl = string.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Authority); 

代码:

 string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];