UriBuilder
(как и любая реализация рисунка строителя) позволяет вам предоставить куски, необходимые для сборки более крупного объекта в форме «по частям», а затем позволяет создать экземпляр конечного продукта (используя свойство .Uri
). Вам не обязательно нужно строить объект за один раз (т. Е. Вы можете мутировать строителя по ходу дела).
Однако, похоже, что вы не используете конструктор UriBuilder(String)
правильно. From MSDN
Этот конструктор инициализирует новый экземпляр класса UriBuilder с фрагментом, хост, путь, порт, запрос, Scheme и Ури заданными свойствами, как указано в URI.
Значение вы должны сделать это, чтобы использовать этот конструктор перегрузки:
var audience1 = new UriBuilder("https://dev.website.com").Uri;
(или даже https://dev.website.com:443
)
Который не был бы полезным для вас, как это не имеет никаких преимуществ по сравнению строительства a Uri
непосредственно с той же строкой.
UriBuilder
будет более обычно используется для штучных еды собрать Ури, например, так:
var myUriBuilder = new UriBuilder();
myUriBuilder.Host = (host == "dev")
? "dev.website.com"
: "qa.website.com";
if (useSsl)
{
myUriBuilder.Scheme = "https";
myUriBuilder.Port = 443;
}
var myUri = myUriBuilder.Uri;
(то есть с довольно сложной логикой определения судьбы каждого из свойств строителя в отдельных отчетах).
На самом деле это не сработало. Если я изменил порт на -1, он отлично работает! – Homam
Не могли бы вы объяснить, что вы подразумеваете под «не работает» - все методы (прямые 'Uri' и' UriBuilder', и поэтапные 'UriBuilder') могут использоваться для построения тех же Uri? Установка порта в -1 сбрасывает Uri на порт по умолчанию на основе схемы (например, 80 для HTTP и 443 для HTTPS) – StuartLC