Как создать метод для полного использования Uri.TryCreate? (или: объединение нескольких путей в URL) - PullRequest
1 голос
/ 12 апреля 2011

Я недавно просматривал эту SO-ветку: Path.Combine для URL-адресов? и подумал, что, возможно, я мог бы создать что-то вроде Path.Combine. Итак, я написал:

    private string combineUrlParts(params string[] urlParts)
    {
        var myUrl = new Uri(urlParts[0]);
        for (int x = 1; x < urlParts.Length; x++)
        {
          if (!Uri.TryCreate(myUrl, urlParts[x], out myUrl))
          {
              // Log failure
          }
        }
        return myUrl.ToString();
    }

Идея состоит в том, чтобы перечислить baseUrl ("http://someurl.com/"), путь (" / company / 5 / ") и другую часть (" /Financials/index.aspx ") и волшебным образом объединить все это.

Этот метод почти работает. В первый раз через цикл он отлично сочетает базовый URL и первый путь. Но во второй раз через цикл Uri.TryCreate просто перезаписывает путь второй частью, что приводит к:

http://someurl.com/Financials/index.aspx

вместо того, что я ожидал:

http://someurl.com/company/5/Financials/index.aspx

Есть идеи, что здесь происходит?

1 Ответ

1 голос
/ 12 апреля 2011

Я думаю, что передача того же URI в TryCreate вызывает проблемы.Попробуйте это:

Uri t;
if (!Uri.TryCreate(myUrl, urlParts[x], out t))
{
          // Log failure
}
myUrl = t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...