From 54d37276016e170a1ae269c3e6f7c15f468f4e4b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 26 Jan 2022 12:54:14 +0800 Subject: [PATCH] Enhance AbpHttpClientProxyServiceConvention --- .../AbpHttpClientProxyServiceConvention.cs | 13 +++++++++++++ .../MyCompanyName.MyProjectName.Web.Host.csproj | 1 + .../MyProjectNameWebModule.cs | 2 ++ 3 files changed, 16 insertions(+) diff --git a/framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs b/framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs index cd5f98b6d6..29ea577ef6 100644 --- a/framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs +++ b/framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs @@ -51,6 +51,12 @@ public class AbpHttpClientProxyServiceConvention : AbpServiceConvention foreach (var controller in GetClientProxyControllers(application)) { + if (ShouldBeRemove(application, controller)) + { + application.Controllers.Remove(controller); + continue; + } + controller.ControllerName = controller.ControllerName.RemovePostFix("ClientProxy"); var controllerApiDescription = FindControllerApiDescriptionModel(controller); @@ -66,6 +72,13 @@ public class AbpHttpClientProxyServiceConvention : AbpServiceConvention } } + protected virtual bool ShouldBeRemove(ApplicationModel application, ControllerModel controllerModel) + { + return application.Controllers + .Where(x => x.ControllerType != controllerModel.ControllerType).ToList() + .Any(x => FindAppServiceInterfaceType(x) == FindAppServiceInterfaceType(controllerModel)); + } + protected virtual void ConfigureClientProxySelector(ControllerModel controller) { RemoveEmptySelectors(controller.Selectors); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index c90a667f14..6eb25ae27f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -25,6 +25,7 @@ + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs index 5aadf42750..368ad5eafe 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -29,6 +29,7 @@ using Volo.Abp.AutoMapper; using Volo.Abp.Caching; using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.Http.Client.IdentityModel.Web; +using Volo.Abp.Http.Client.Web; using Volo.Abp.Identity.Web; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; @@ -48,6 +49,7 @@ namespace MyCompanyName.MyProjectName.Web; typeof(MyProjectNameHttpApiModule), typeof(AbpAspNetCoreAuthenticationOpenIdConnectModule), typeof(AbpAspNetCoreMvcClientModule), + typeof(AbpHttpClientWebModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule),