Как на самом деле работает httpclient (aka, что на самом деле не так с httpclient)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как на самом деле работает httpclient (aka, что на самом деле не так с httpclient)?

Сообщение Anonymous »

(пожалуйста, обнажите меня и прочитайте с щепоткой юмора)
два года назад, в веб -приложении .NET 8 MVC, я использовал Httpclient, чтобы сделать HTTP -запросы в API, например, так: < /p>

Код: Выделить всё

HttpClientHandler httpClientHandler = new HttpClientHandler()
{
Credentials = new NetworkCredential(configuration[Id], configuration[Pwd])
};

using var client = new HttpClient(httpClientHandler);
client.DefaultRequestHeaders.Add("Accept", "application/xml");
var result = client.GetAsync($"{configuration[Host]}/api/example").Result;
Я знаю, что это не рекомендуемый способ использования httpclient , но мне нужно было установить базовые учетные данные аутентификации и базовый адрес API (хост), поэтому я не мог зарегистрироваться статический httpclient с контейнером DI приложения; Это казалось, что было чрезвычайно сложным (даже по сравнению с ракетостроенной наукой), потому что настройки хоста, ID и PWD существуют как в Appsettings.json , так и в Appsettings.development.json , так и на основе пользователя на основе Например: < /p>

Код: Выделить всё

"API": {
"Debug": {
"Host": "...",
"Id": "...",
"Pwd": "..."
},
"Production": {
"Host": "...",
"PartnerId": "...",
"Pwd": "..."
}
}
< /code>
где «отладка» и «производство»-это два профиля, а фактический профиль основан на зарегистрированном пользователе, и поэтому он определяется во время выполнения. < /p>
< P> в течение двух лет вышеуказанный код работал нормально как локально, так и на производственном сервере до вчерашнего дня, когда все запросы начали сработать как на машине разработки, так и на производственном сервере. После многих часов отладки (и проклятия и употребления скотча) я решил заменить httpclient 
на старый (устаревший) httpwebrequest и вуаля, все снова начало работать.
Fwiw, вот ответ API: < /p>

Код: Выделить всё


Forbidden resource

< /code>
Конечно, сначала я подозревал, что что -то изменилось на стороне API. Тем не менее, отправка те же запросы от почтальона работала нормально. Машина и производственный сервер), что IMHO означает, что проблема имеет мало отношения со всеми возмутительными проблемами httpclient 
(объединенные соединения, разрешение DNS, истощение всех ресурсов и всю вселенную)? Br /> Что на самом деле httpclient < /code> делает под обложками? И почему хороший, старый httpwebrequest продолжает работать так, как должно быть, но считается «устаревшим» в пользу самого уродливого, самого неприятного, наиболее своеобразного и ухудшающегося мозга в использовании httpclient ?
Ох, и если у кого -то есть инструкции о том, как настроить статический httpclient < /code> с динамическими параметрами (учетные данные и т. Д.), Как описано выше, которые не требуют двух степеней PhD и Three MSC, чтобы следовать , пожалуйста, помогите себе.


Подробнее здесь: https://stackoverflow.com/questions/794 ... httpclient
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Алгоритм генерации at_mac для eap-aka
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Алгоритм генерации at_mac для eap-aka
    Anonymous » » в форуме Linux
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Алгоритм генерации at_mac для eap-aka
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • PHP проверка, если session_write_close () был вызван (aka, является сеансом в настоящее время записывается)
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Называется тип объекта 'facebook :: flipper :: socketcertificateprovider' (aka 'int') не является указателем функции или
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»