diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index b090b3f24d..baf18806d9 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -19,6 +19,8 @@ "Developers": "Developers", "LicenseType": "License type", "Manage": "Manage", + "SetDefault": "Set as default", + "DefaultOrganization": "Default", "StartDate": "Start date", "EndDate": "End date", "Modules": "Modules", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json index c653314255..840d371625 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json @@ -18,6 +18,8 @@ "Developers": "Yazılımcılar", "LicenseType": "lisans türü", "Manage": "Yönet", + "SetDefault": "Varsayılan olarak ayarla", + "DefaultOrganization": "Varsayılan", "StartDate": "Başlangıç tarihi", "EndDate": "bitiş tarihi", "Modules": "Modüller", @@ -395,4 +397,4 @@ "ExtendNow": "Şimdi Uzat", "ContinueWithNewOrganization": "Yeni bir organizasyon ile devam et" } -} \ No newline at end of file +} diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index 8b2818debc..3698916679 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -18,6 +18,8 @@ "Developers": "开发者", "LicenseType": "许可类型", "Manage": "管理", + "SetDefault": "设为默认", + "DefaultOrganization": "默认", "StartDate": "开始日期", "EndDate": "结束日期", "Modules": "模块", @@ -391,4 +393,4 @@ "TrialLicenseExpiredInfo": "您的试用许可期限已过!", "CommercialNewsletterConfirmationMessage": "我同意条款和条件和隐私政策。" } -} \ No newline at end of file +} diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json index 2cd3e79b5c..228b0dd142 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json @@ -18,6 +18,8 @@ "Developers": "開發者", "LicenseType": "許可證類型", "Manage": "管理", + "SetDefault": "設爲默認", + "DefaultOrganization": "默認", "StartDate": "開始日期", "EndDate": "結束日期", "Modules": "模組", @@ -391,4 +393,4 @@ "TrialLicenseExpiredInfo": "您的試用許可期限已過!", "CommercialNewsletterConfirmationMessage": "我同意條款和條件和隱私政策。" } -} \ No newline at end of file +} diff --git a/docs/en/Blog-Posts/2022-01-11 v5_1_Release_Stable/POST.md b/docs/en/Blog-Posts/2022-01-11 v5_1_Release_Stable/POST.md index 47c7832695..4fe7bd39b9 100644 --- a/docs/en/Blog-Posts/2022-01-11 v5_1_Release_Stable/POST.md +++ b/docs/en/Blog-Posts/2022-01-11 v5_1_Release_Stable/POST.md @@ -104,6 +104,8 @@ Here are some other notable changes that come with this release: * Support markdown in [CMS-Kit comments ](https://docs.abp.io/en/abp/latest/Modules/Cms-Kit/Comments)feature ([#10792](https://github.com/abpframework/abp/pull/10792)) * Used file scoped namespaces for all the ABP Framework source code :) ([#10552](https://github.com/abpframework/abp/pull/10696)) +* Developers should control `EnableLegacyTimestampBehavior` when using PostgreSQL. [#11371](https://github.com/abpframework/abp/pull/11371) [#65](https://github.com/abpframework/eShopOnAbp/pull/65) + All issues & PRs in [5.1 milesone](https://github.com/abpframework/abp/milestone/60?closed=1). diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs index 66acd8f171..dc1923f180 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs @@ -166,7 +166,7 @@ public abstract class AbpComponentBase : OwningComponentBase return localizer; } - protected async Task HandleErrorAsync(Exception exception) + protected virtual async Task HandleErrorAsync(Exception exception) { Logger.LogException(exception); await InvokeAsync(async () => diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpEventBusRebusModule.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpEventBusRebusModule.cs index 657c34d2be..e65d86f3c5 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpEventBusRebusModule.cs +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpEventBusRebusModule.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using Rebus.Handlers; +using Rebus.Pipeline; +using Rebus.Pipeline.Receive; using Rebus.ServiceProvider; using Volo.Abp.Modularity; @@ -21,6 +23,17 @@ public class AbpEventBusRebusModule : AbpModule context.Services.AddRebus(configure => { + configure.Options(options => + { + options.Decorate(d => + { + var step = new AbpRebusEventHandlerStep(); + var pipeline = d.Get(); + + return new PipelineStepInjector(pipeline).OnReceive(step, PipelineRelativePosition.After, typeof(ActivateHandlersStep)); + }); + }); + preActions.Configure().Configurer?.Invoke(configure); return configure; }); @@ -35,4 +48,4 @@ public class AbpEventBusRebusModule : AbpModule .GetRequiredService() .Initialize(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventBusOptions.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventBusOptions.cs index 5238cdd8bb..4c39b9bf1d 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventBusOptions.cs +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventBusOptions.cs @@ -20,24 +20,13 @@ public class AbpRebusEventBusOptions } private Action _configurer; - [NotNull] - public Func Publish { - get => _publish; - set => _publish = Check.NotNull(value, nameof(value)); - } - private Func _publish; + public Func Publish { get; set; } public AbpRebusEventBusOptions() { - _publish = DefaultPublish; _configurer = DefaultConfigure; } - private async Task DefaultPublish(IBus bus, Type eventType, object eventData) - { - await bus.Advanced.Routing.Send(InputQueueName, eventData); - } - private void DefaultConfigure(RebusConfigurer configure) { configure.Subscriptions(s => s.StoreInMemory()); diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs new file mode 100644 index 0000000000..c0c655b596 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs @@ -0,0 +1,22 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Rebus.Messages; +using Rebus.Pipeline; +using Rebus.Pipeline.Receive; + +namespace Volo.Abp.EventBus.Rebus; + +public class AbpRebusEventHandlerStep : IIncomingStep +{ + public Task Process(IncomingStepContext context, Func next) + { + var message = context.Load(); + var handlerInvokers = context.Load().ToList(); + + handlerInvokers.RemoveAll(x => x.Handler.GetType() == typeof(RebusDistributedEventHandlerAdapter)); + context.Save(new HandlerInvokers(message, handlerInvokers)); + + return next(); + } +} diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventBus.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventBus.cs index d637f3fe89..cf6c1d6b0f 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventBus.cs +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventBus.cs @@ -148,9 +148,15 @@ public class RebusDistributedEventBus : DistributedEventBusBase, ISingletonDepen await TriggerHandlersAsync(eventType, eventData); } - protected override async Task PublishToEventBusAsync(Type eventType, object eventData) + protected async override Task PublishToEventBusAsync(Type eventType, object eventData) { - await AbpRebusEventBusOptions.Publish(Rebus, eventType, eventData); + if (AbpRebusEventBusOptions.Publish != null) + { + await AbpRebusEventBusOptions.Publish(Rebus, eventType, eventData); + return; + } + + await Rebus.Publish(eventData); } protected override void AddToUnitOfWork(IUnitOfWork unitOfWork, UnitOfWorkEventRecord eventRecord) 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..2cbe02c95e 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) + .Any(x => FindAppServiceInterfaceType(x) == FindAppServiceInterfaceType(controllerModel)); + } + protected virtual void ConfigureClientProxySelector(ControllerModel controller) { RemoveEmptySelectors(controller.Selectors); diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs index 8bb3656fae..dc9a6102f8 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs @@ -86,7 +86,7 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency { if (CurrentTenant.Id.HasValue) { - url = url.Replace(tenantNamePlaceHolder, await GetCurrentTenantNameAsync()); + url = url.Replace(tenantNamePlaceHolder, await GetCurrentTenantNameAsync() + "."); } else { diff --git a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs new file mode 100644 index 0000000000..53ca25e7c7 --- /dev/null +++ b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Testing; +using Volo.Abp.UI.Navigation.Urls; +using Xunit; + +namespace Volo.Abp.UI.Navigation; + +public class AppUrlProvider_Tests : AbpIntegratedTest +{ + private readonly IAppUrlProvider _appUrlProvider; + private readonly ICurrentTenant _currentTenant; + + public AppUrlProvider_Tests() + { + _appUrlProvider = ServiceProvider.GetRequiredService(); + _currentTenant = ServiceProvider.GetRequiredService(); + } + + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + services.Configure(options => + { + options.Applications["MVC"].RootUrl = "https://{{tenantName}}.abp.io"; + options.Applications["MVC"].Urls["PasswordReset"] = "account/reset-password"; + options.RedirectAllowedUrls.AddRange(new List() + { + "https://wwww.volosoft.com", + "https://wwww.aspnetzero.com" + }); + + options.Applications["BLAZOR"].RootUrl = "https://{{tenantId}}.abp.io"; + options.Applications["BLAZOR"].Urls["PasswordReset"] = "account/reset-password"; + }); + } + + [Fact] + public async Task GetUrlAsync() + { + using (_currentTenant.Change(null)) + { + var url = await _appUrlProvider.GetUrlAsync("MVC"); + url.ShouldBe("https://abp.io"); + + url = await _appUrlProvider.GetUrlAsync("MVC", "PasswordReset"); + url.ShouldBe("https://abp.io/account/reset-password"); + } + + using (_currentTenant.Change(Guid.NewGuid(), "community")) + { + var url = await _appUrlProvider.GetUrlAsync("MVC"); + url.ShouldBe("https://community.abp.io"); + + url = await _appUrlProvider.GetUrlAsync("MVC", "PasswordReset"); + url.ShouldBe("https://community.abp.io/account/reset-password"); + } + + var tenantId = Guid.NewGuid(); + using (_currentTenant.Change(tenantId)) + { + var url = await _appUrlProvider.GetUrlAsync("BLAZOR"); + url.ShouldBe($"https://{tenantId}.abp.io"); + + url = await _appUrlProvider.GetUrlAsync("BLAZOR", "PasswordReset"); + url.ShouldBe($"https://{tenantId}.abp.io/account/reset-password"); + } + + await Assert.ThrowsAsync(async () => + { + await _appUrlProvider.GetUrlAsync("ANGULAR"); + }); + } + + [Fact] + public async Task GetUrlOrNullAsync() + { + (await _appUrlProvider.GetUrlOrNullAsync("ANGULAR")).ShouldBeNull(); + } + + [Fact] + public void IsRedirectAllowedUrl() + { + _appUrlProvider.IsRedirectAllowedUrl("https://community.abp.io").ShouldBeFalse(); + _appUrlProvider.IsRedirectAllowedUrl("https://wwww.volosoft.com").ShouldBeTrue(); + } +} diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LanguageSwitch.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LanguageSwitch.razor index 2a0ab7397a..75b64e05b7 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LanguageSwitch.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LanguageSwitch.razor @@ -30,7 +30,7 @@ CultureInfo.CurrentCulture.Name, CultureInfo.CurrentUICulture.Name ); - + if (currentLanguage == null) { var localizationOptions = await RequestLocalizationOptionsProvider.GetLocalizationOptionsAsync(); @@ -56,10 +56,10 @@ private void ChangeLanguage(LanguageInfo language) { - var relativeUrl = NavigationManager.Uri.RemovePreFix(NavigationManager.BaseUri).EnsureStartsWith('/'); - + var relativeUrl = NavigationManager.Uri.RemovePreFix(NavigationManager.BaseUri).EnsureStartsWith('/').EnsureStartsWith('~'); + NavigationManager.NavigateTo( - $"/Abp/Languages/Switch?culture={language.CultureName}&uiCulture={language.UiCultureName}&returnUrl={relativeUrl}", + $"Abp/Languages/Switch?culture={language.CultureName}&uiCulture={language.UiCultureName}&returnUrl={relativeUrl}", forceLoad: true ); } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LoginDisplay.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LoginDisplay.razor index 07e4d9918d..adc42e8da3 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LoginDisplay.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Themes/Basic/LoginDisplay.razor @@ -26,13 +26,13 @@ { @foreach (var menuItem in Menu.Items) { - @menuItem.DisplayName + @menuItem.DisplayName } } - @L["Login"] + @L["Login"] - \ No newline at end of file + diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/Branding.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/Branding.razor index 5e0537b2b2..a0c91635a9 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/Branding.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/Branding.razor @@ -3,7 +3,7 @@ @if (!BrandingProvider.LogoUrl.IsNullOrWhiteSpace()) { - @BrandingProvider.AppName + @BrandingProvider.AppName } @BrandingProvider.AppName diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml index 02743d2f3d..adc5547693 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml @@ -25,7 +25,7 @@

@group.DisplayName


-
+
{ + return this.sessionState.getLanguage$(); + } + get languageChange$(): Observable { return this._languageChange$.asObservable(); } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/handlers/document-dir.handler.ts b/npm/ng-packs/packages/theme-shared/src/lib/handlers/document-dir.handler.ts index fb5d65710f..8260a39c27 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/handlers/document-dir.handler.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/handlers/document-dir.handler.ts @@ -1,7 +1,7 @@ import { getLocaleDirection, LocalizationService } from '@abp/ng.core'; import { Injectable, Injector } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; -import { map, startWith } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { LocaleDirection } from '../models/common'; @Injectable() @@ -14,17 +14,11 @@ export class DocumentDirHandlerService { private listenToLanguageChanges() { const l10n = this.injector.get(LocalizationService); - // will always listen, no need to unsubscribe - l10n.languageChange$ - .pipe( - startWith(l10n.currentLang), - map(locale => getLocaleDirection(locale)), - ) - .subscribe(dir => { - this.dir.next(dir); - this.setBodyDir(dir); - }); + l10n.currentLang$.pipe(map(locale => getLocaleDirection(locale))).subscribe(dir => { + this.dir.next(dir); + this.setBodyDir(dir); + }); } private setBodyDir(dir: LocaleDirection) { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor index 93745851b5..4bb044a987 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor @@ -12,10 +12,10 @@

Welcome to the Application

@L["LongWelcomeMessage"]

- + @if (!CurrentUser.IsAuthenticated) { - @L["Login"] + @L["Login"] }
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml index 0da32f7519..f72161d5d4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml @@ -16,7 +16,7 @@ MyCompanyName.MyProjectName.Blazor.Server - + 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), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index 29ab15443c..0abdf69927 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -19,6 +19,7 @@ + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs index 96aaa92102..fc15536994 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs @@ -36,6 +36,7 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.Http.Client.IdentityModel.Web; using Volo.Abp.Identity; using Volo.Abp.Identity.Web; +using Volo.Abp.Http.Client.Web; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; using Volo.Abp.PermissionManagement; @@ -57,6 +58,7 @@ namespace MyCompanyName.MyProjectName; typeof(MyProjectNameHttpApiModule), typeof(AbpAspNetCoreAuthenticationOpenIdConnectModule), typeof(AbpAspNetCoreMvcClientModule), + typeof(AbpHttpClientWebModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule),