Делать так, как вы описываете, совершенно безопасно. Свободно устанавливая заголовки вне строки URL или объекта Url
, они будут применяться к запросу , а не к клиенту. Пример:
await url.WithHeader(name, value).PostAsync(body);
Этот вызов может выполняться миллион раз из разных потоков с разными значениями заголовка и одного общего экземпляра HttpClient
без конфликтов. Это работает, потому что под капотом он устанавливает заголовок на HttpRequestMessage
, а не заголовки по умолчанию на HttpClient
.