Uri.TryCreate не дает ожидаемого результата - PullRequest
0 голосов
/ 23 января 2012

Я очищаю веб-сайт для URL-адресов, и у всех тегов привязки есть только значение href, равное строке запроса, например ..

<a href="?AppId=12345&CatId=13">Details</a>

URL-адрес текущей страницы выглядит примерно так ...

http://www.theurl.com/ThePage.aspx?PageNo=2

Поэтому URL, который я ищу, будет

http://www.theurl.com/ThePage.aspx?AppId=12345&CatId=13

Чтобы получить это, я использую метод Uri.TryCreate, поэтому я передаю следующие параметры (первые два параметра имеют тип Uri, а не строка) ..

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "?AppId=12345&CatId=13", out uri);

Однако для параметра out 'uri' установлено значение ..

http://www.theurl.com/?AppId=12345&CatId=13

Как видите, он удаляет путь ASPX. Можете ли вы порекомендовать лучший способ сделать это или объяснить, почему это не работает так, как я думал, должно?

Ответы [ 2 ]

1 голос
/ 23 января 2012

Попробуйте это:

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "ThePage.aspx?AppId=12345&CatId=13", out uri);

Согласно документам , первый - базовый URI, второй - относительный URI.

0 голосов
/ 23 января 2012

Хм.Я не уверен, что поведение, которое происходит, является правильным.Это может быть ошибкой.

В любом случае, вы можете найти следующий помощник:

UriBuilder uBuild = new UriBuilder("http://www.theurl.com/path/thePage.aspx?PageNo=2");
uBuild.Query = "AppId=12345&CatId=13";
Uri newUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=12345&CatId=13
//Note that we can reuse uBuild as we continue to parse the page, as long as we're only dealing with cases where only the query changes.
uBuild.Query = "AppId=678&CatId=2";
Uri anotherUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=678&CatId=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...