воскресенье, 12 апреля 2020 г.

C# Как убрать порт по умолчанию при генерации адреса с помощью UriBuilder

Проблема


есть такой код по преобраpованию ссылки

var uriBuilder = new UriBuilder(absoluteUri);
//(код модифицирующий url с помощью механизмов UriBuilder)
...
uriBuilder.ToString()

uriBuilder.ToString() генерирует ссылку с явным указанием порта, даже если порта во входной строке не было

Пример
вход: https://a.b.com/test
выход:https://a.b.com:443/test

Что помогло

Статья
How to remove the port number from a url string
https://stackoverflow.com/questions/2819336/how-to-remove-the-port-number-from-a-url-string

Решение

написал такой вспомогательный метод

private static string GetUriBuilderAsStringWithoutDefaultPort(UriBuilder uriBuilder)
        {
            if (uriBuilder.Uri.IsDefaultPort) uriBuilder.Port = -1;
            return uriBuilder.ToString();
        }

и теперь вместо UriBuilder.ToString() вызваю GetUriBuilderAsStringWithoutDefaultPort(uriBuilder)


Комментариев нет:

Отправить комментарий