используя HttpClient из c# веб-приложения - PullRequest
0 голосов
/ 26 апреля 2020

В документации MS говорится, что «HttpClient предназначен для создания экземпляра один раз и повторного использования в течение всего жизненного цикла приложения» - это кажется достаточно справедливым, но не таким простым, когда вы используете HttpClient из веб-приложения. Все примеры с использованием HttpClient выполняются с помощью консольных приложений, и, на самом деле, я не могу найти никаких примеров с веб-приложением, использующим API с использованием HttpClient. Поэтому мой вопрос заключается в том, действительно ли HttpClient предназначен для использования из веб-приложения, или я должен использовать WebRequest или что-то еще? Спасибо всем, кто отвечает!

Добавление через 24 часа .... это приложение. net framework. Извините, я только догоняю ответы, я никогда раньше не пользовался этим сайтом и предполагал, что получу электронное письмо, когда ответы будут опубликованы - искреннее спасибо за все ваши комментарии и похоже, что у меня есть кое-что для чтения

Ответы [ 3 ]

1 голос
/ 26 апреля 2020

Предпочтительным способом является использование HttpClientFactory

Затем вы можете просто внедрить HttpClient в свои службы и позволить контейнеру DI беспокоиться о сроке службы.

0 голосов
/ 26 апреля 2020

Если вы используете do tnet core, тогда используйте HttpClientFactory, если не используете личное поле stati c для вашего HttpClient. Это рекомендуемые лучшие практики. Второй вариант все еще создает некоторые проблемы, но они являются более крайними случаями и не приведут к исчерпанию ваших сокетов. В этой статье все очень красиво объясняется https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

0 голосов
/ 26 апреля 2020

Консольные приложения часто используются для учебных проектов, потому что их проще создавать и запускать без дополнительных сложностей, связанных с размещением сервисов. Использовать консольный проект для иллюстрации функциональности HttpClient проще, чем из веб-приложения. Также стоит упомянуть, что все. NET базовые приложения являются консольными приложениями.

В производственной среде веб-приложения размещаются на веб-серверах, в контейнерах, windows службах или в среде без серверов, поэтому управление жизненным циклом HttpClient очень важно, и здесь следуют рекомендациям Microsoft. Вы наверняка будете использовать контейнер Io C для управления графом объектов в своих приложениях. Вы можете настроить Io C таким образом, чтобы жизненный цикл HttpClient был либо единичным, либо созданным для каждого HTTP-запроса.

...