这可能声音就像一个微不足道的问题,但由于某种原因它不是。
而不是需要重定向
Response.Redirect("~/folder1/folder2/some.aspx")
我需要该位置,就像它表现得像
一样string navigatingUrl = Response.Redirect("~/folder1/folder2/some.aspx")
尝试复制这个我从
开始string navigatingUrl = new Uri(HttpContext.Current.Request.Url,
new Uri("~/folder1/folder2/some.aspx", UriKind.Relative));
而是生成"http://www.fullRequestUrl/~/folder1/folder2/some.aspx"
编辑:我已经发现为什么我绝对讨厌Microsoft的URL API。对于编写这行代码的人来说,我真希望得到祸害
else if (uriKind == UriKind.Relative)
{
// Here we know that we can create an absolute Uri, but the user has requested
only a relative one
e = GetException(ParsingError.CannotCreateRelative);
}
什么会有人抛出这样的错误?这个if语句完全破坏了API。
答案 0 :(得分:4)
我认为您正在寻找Control.ResolveUrl()。通常,您可能会使用在Page对象上找到的方法(如果您使用的是WebForms)。
答案 1 :(得分:1)
从Get absolute url for a file in my asp.net project to include HTTP// etc for use externally?窃取唯一绝对的方法是:
string url = Request.Url.GetLeftPart(UriPartial.Authority)
+ VirtualPathUtility.ToAbsolute(relativePath)