Как Response.Redirect вычисляет URL для «~ / folder1 / folder2 / some.aspx» - PullRequest
1 голос
/ 10 января 2011

Это может звучать , как тривиальная проблема, но по какой-то причине это не так.

Вместо необходимости перенаправлять

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"

Редактировать: Ну, яузнал, почему я абсолютно ненавижу API URL от Microsoft.Я желаю адского огня тому, кто написал эту строчку кода

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 ]

4 голосов
/ 10 января 2011

Я думаю, что вы ищете Control.ResolveUrl () .Обычно вы, вероятно, будете использовать метод, найденный в вашем объекте Page (если вы используете WebForms).

1 голос
/ 14 сентября 2011

Кража из Получить абсолютный URL для файла в моем проекте asp.net, чтобы включить HTTP // и т.д. для внешнего использования? единственный абсолютный способ сделать это:

string url = Request.Url.GetLeftPart(UriPartial.Authority) 
                    + VirtualPathUtility.ToAbsolute(relativePath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...