为了让webapp与其他服务器上的其他应用程序共享文件更简单,我在母版页中使用了基本href标记。正如许多人发现的那样,这会破坏webform路径。我有一个工作的Form Adapter类,但我不知道如何获取url的绝对路径。目前,我的程序硬编码使用类似于:
的东西HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;
值得注意的是,我目前正在我的本地IIS服务器上进行测试,因此我尝试使用的很多东西都有一种奇怪的趋势,以便绝对路径不包含域名(我的本地IIS)外部不可见)。这意味着它不是绝对路径,因此基础href会破坏它。
有没有一种很好的方法来处理这个问题,以便它可以在没有硬编码的情况下在本地工作,但在上传到服务器时也能正常工作?我宁愿避免任何涉及在服务器端副本上做一些不同的事情。
是的,我意识到我可以在本地和服务器上使用单独的web.config文件来获取此信息,但这很难看并且违反了DRY。
答案 0 :(得分:111)
我过去曾用过这个:
// 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;
答案 1 :(得分:3)
旧帖子,但这是另一个稍微冗长的方法
var baseUri = new Uri(HttpContext.Current.Request.Url, "/");
答案 2 :(得分:0)
我使用了以下内容,它既适用于客户端,也适用于服务器。
$num1+$num1+num1
答案 3 :(得分:0)
使用字符串插值:
string redirectUri = $"{this.Request.Url.Scheme}://{this.Request.Url.Authority}{this.Request.ApplicationPath}account/signedout";
根据上下文将“ this”替换为“ HttpContext”或“ HttpContext.Current”。
答案 4 :(得分:-9)
代码:
string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];