Для именованных клиентов ответ Брэда может быть единственным решением.Но для типизированных клиентов вы можете ввести ключ в соответствии с предложением mjwills.
При запуске:
services.AddSingleton<IApiKeyProvider, ApiKeyProvider>();
Где ApiKeyProvider:
public class ApiKeyProvider: IApiKeyProvider
{
public string ApiKey { get; set; }
}
И введите в набранный клиент:
public class MyHttpClient
{
public HttpClient Client { get; }
public MyHttpClient(HttpClient client, IApiKeyProvider apiKeyProvider)
{
var key = apiKeyProvider.ApiKey;
}
}
Или, если ключ сохранен в конфигурации, вы можете использовать IOptions.
При запуске:
services.Configure<ApiSettings>(options => configuration.GetSection("ApiSettings").Bind(options));
Где ApiSettings:
public class ApiSettings
{
public string ApiKey { get; set; }
}
И внедрить в типизированный клиент:
public class MyHttpClient
{
public HttpClient Client { get; }
public MyHttpClient(HttpClient client, IOptions<ApiSettings> apiSettings)
{
var key = apiSettings.Value.ApiKey;
}
}
Таким же образом вы можете получить доступ к контексту запроса, например, когда вы хотите прочитать текущий access_token,как описано в моем ответе здесь .