要更简单的web应用程序与其他服务器上的其他应用程序共享文件,我用我的母版页基href标记。正如许多人已经发现,这打破了网页表单的路径。我有一个工作表适配器类,但我不知道如何获取URL的绝对路径。目前,我的计划是硬编码使用一个类似于:

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

这是值得指出的是,我目前正在测试我的本地IIS服务器上,所以有对很多事情我已经使用按顺序尝试什么的绝对路径不包括域名(我的本地IIS一个奇怪的倾向外部是不可见)。这意味着它不是一个绝对的路径并且因此基本href会破坏它。

是否有处理这种使得其将在本地工作,没有硬编码,但是当上传到服务器也将正常工作的好办法?我宁愿避免任何涉及做一些在服务器端副本不同。

是的,我知道我可以使用单独的web.config文件本地和服务器上得到这个信息,但是这是丑陋的,违反干的。

有帮助吗?

解决方案

我已经在过去使用这样的:

// 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, "/");

我用下面的,它为我工作的客户端和服务器。

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"];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top