Response.Redirect如何计算“〜/ folder1 / folder2 / some.aspx”的URL

时间:2011-01-10 20:49:33

标签: c# .net asp.net api uri

这可能声音就像一个微不足道的问题,但由于某种原因它不是。

而不是需要重定向

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。

2 个答案:

答案 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)