diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs index 0311423504..bfe52508e4 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs @@ -10,11 +10,17 @@ public class AbpHttpClientOptions { public Dictionary HttpClientProxies { get; set; } - public Dictionary> ProxyHttpClientPreSendActions { get; } + public Dictionary>> ProxyHttpClientPreSendActions { get; } public AbpHttpClientOptions() { HttpClientProxies = new Dictionary(); - ProxyHttpClientPreSendActions = new Dictionary>(); + ProxyHttpClientPreSendActions = new Dictionary>>(); + } + + public AbpHttpClientOptions AddPreSendAction(string remoteServiceName, Action action) + { + ProxyHttpClientPreSendActions.GetOrAdd(remoteServiceName, () => new List>()).Add(action); + return this; } } diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs index 9036b552f9..68664ca513 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs @@ -146,7 +146,7 @@ public class ClientProxyBase : ITransientDependency HttpResponseMessage response; try { - foreach (var preSendAction in ClientOptions.Value.ProxyHttpClientPreSendActions.Where(x => x.Key == clientConfig.RemoteServiceName).Select(x => x.Value)) + foreach (var preSendAction in ClientOptions.Value.ProxyHttpClientPreSendActions.Where(x => x.Key == clientConfig.RemoteServiceName).SelectMany(x => x.Value)) { preSendAction(clientConfig, requestContext, client); } diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs index 8af7a5bbbe..4dd69041fc 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Net.Http; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Http.Client; using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Client.Proxying; using Volo.Abp.Http.DynamicProxying; using Volo.Abp.Http.Localization; using Volo.Abp.Localization; @@ -64,7 +66,7 @@ public class AbpHttpClientTestModule : AbpModule Configure(options => { - options.ProxyHttpClientPreSendActions.Add("Default", (_, requestContext, httpclient) => + options.AddPreSendAction("Default", (_, requestContext, httpclient) => { if (requestContext.Action.Name.Equals("TimeOutRequestAsync")) {