0

我正在构建一个 API,该 API 公开一个 POST 端点,该端点在请求中接受包含映射到 uris 的键的环境详细信息。然后这个 API 会根据传递的请求数据,向其他 API 发送 POST 请求。

到目前为止,客户端的基本 uri 是静态的,现在 uri 是动态的并且是从传入请求传递的。

通过构造函数注入时,HttpClient 构建在 Service 类中。

如何在已由构造函数构建的客户端上添加 CredentialsCache 并将逻辑从启动到按需请求?

目前使用扩展方法在 Startup 上注册

public static IServiceCollection AddUnderTest(this IServiceCollection services, ClientA settings)
    {
        var client = services
            .AddHttpClient(
            nameof(ClientA),
            c => { c.DefaultRequestHeaders.Add("Cache-Control", "no-cache"); });

        client.ConfigurePrimaryHttpMessageHandler(
            handler => new HttpClientHandler
            {
                Credentials = new CredentialCache { {
                    new Uri(""),
                    "Digest",
                    new NetworkCredential(settings.Username, settings.Password) } }
            });
        return services;
    }

在服务等级

public class MyService
{

    public MyService(IHttpClientFactory htpClientFactory)
    {
        var myClient = htpClientFactory.CreateClient("ClientA");
        //add digest auth and credentials here, and not on startup
    }
}

如何在启动时添加与扩展方法中相同的配置?

4

0 回答 0