Изменение базового адреса HttpClient - PullRequest
0 голосов
/ 06 сентября 2018

При написании приложения, использующего HttpClient, я использую тот же подход, что и в этом посте , другими словами Я не использую и вместо этого использую статический HttpClient. У меня не было проблем с этим, когда я хочу общаться только с одним сервером. (Я устанавливаю IP-адрес как BaseAddress и продолжаю)

Теперь у меня та же проблема, что и у этого вопроса относительно того, что BaseAddress нельзя изменить после начала использования HttpClient.

Ответы на этот вопрос отвечают объяснением, что это невозможно сделать. Вы не можете изменить BaseAddress.

Итак, мой вопрос (который отличается от связанного, поэтому не является дубликатом), что делать, если мы хотим изменить IP-адрес для связи с другим сервером?

Должны ли мы создать экземпляр другого HttpClient? (нет, мы не будем использовать using). Как мы будем правильно действовать дальше?

1 Ответ

0 голосов
/ 06 сентября 2018

В существующем состоянии вы не можете изменить базовый адрес.

Как нам правильно действовать отсюда?

Не устанавливайте базовый адрес, а просто используйте полные адреса для запросов.

Таким образом, один и тот же клиент может быть использован для всех запросов, в противном случае вам потребуется создать нового клиента для каждого базового адреса, что также лишит преимущества наличия единственного клиента.

Фабрика клиентов в asp.net core 2+ с тех пор исправила проблемы, связанные с наличием нескольких клиентов.

Утилизация клиента не является обязательной, но это приведет к отмене любых текущих запросов и гарантирует, что данный экземпляр HttpClient не может быть использован после вызова Dispose. Фабрика занимается отслеживанием и удалением важных ресурсов, которые используются экземплярами HttpClient, а это означает, что экземпляры HttpClient обычно можно рассматривать как объекты .NET, которые не требуют утилизации.

Одним из последствий этого является то, что некоторые распространенные шаблоны, которые люди используют сегодня для обработки экземпляров HttpClient, такие как поддержание одного экземпляра HttpClient в течение длительного времени, больше не требуются. Будет доступна документация о том, что именно делает фабрика и какие шаблоны она разрешает, но еще не завершена.

Завершенная документация Использование HttpClientFactory для реализации устойчивых HTTP-запросов

...