小编Seh*_*Ram的帖子

将处理程序委托为瞬态或单例

我们使用 http 客户端工厂和委托处理程序来调用合作伙伴 api 并处理响应。如下所示的 AuthenticationDelegating 处理程序有责任获取合作伙伴 api 身份验证所需的令牌并将其提供为 api 请求的一部分。

问题 - 如果令牌过期时间设置为 24 小时,我应该将 AuthenticationDelegationHandler 注册为 Transient 还是 Singleton?

启动.cs

        services.AddTransient<AuthenticationDelegatingHandler>();
        var apiSettings = Configuration.GetSection(nameof(APIParameters)).Get<APIParameters>();
        var apRegistrationParameters = Configuration.GetSection(nameof(AppRegistrationParameters)).Get<AppRegistrationParameters>();

        services.AddHttpClient("ApiSecuredClient", client =>
        {
            client.BaseAddress = new Uri(ApiSettings.BaseUrl);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(ApiSettings.MediaType));
           
        })
        .AddHttpMessageHandler<AuthenticationDelegatingHandler>().SetHandlerLifetime(TimeSpan.FromMinutes(apRegistrationParameters.LifetimeOfAuthenticationHandlerInMinutes));
Run Code Online (Sandbox Code Playgroud)

http客户端工厂

   public virtual async Task<HttpResponseMessage> GetRequestAsync<T>(T req,                                                                            Sales360APIParameters 
 _paramenters) where T : class, IApiBaseRequest
    {
        using (var client = _httpClientFactory.CreateClient("XXXClient"))
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_paramenters.MediaType));
            var json = JsonConvert.SerializeObject(req);
            var data = new StringContent(json, Encoding.UTF8, _paramenters.MediaType);
            data.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("version", _paramenters.Version)); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core

3
推荐指数
1
解决办法
4155
查看次数

标签 统计

asp.net-core ×1

c# ×1