From 4099af8cc15f7f6663e3c30462dcc53cfa577765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 6 Jan 2018 12:11:44 +0300 Subject: [PATCH] Extracted TenantResolver from MultiTenancyManager. Renamed old ITenantResolver to ITenantResolveContributor --- .../AbpAspNetCoreMultiTenancyModule.cs | 8 +- ...r.cs => CookieTenantResolveContributer.cs} | 2 +- ...r.cs => DomainTenantResolveContributer.cs} | 4 +- ...r.cs => HeaderTenantResolveContributer.cs} | 4 +- ...cs => HttpTenantResolveContributerBase.cs} | 4 +- ...=> QueryStringTenantResolveContributer.cs} | 2 +- ...er.cs => RouteTenantResolveContributer.cs} | 2 +- .../MultiTenancyOptionsExtensions.cs | 2 +- ...r.cs => ActionTenantResolveContributer.cs} | 4 +- .../MultiTenancy/ITenantResolveContributer.cs | 7 ++ .../Volo/Abp/MultiTenancy/ITenantResolver.cs | 11 ++- .../Abp/MultiTenancy/TenantResolveOptions.cs | 4 +- .../Volo/Abp/MultiTenancy/TenantResolver.cs | 46 ++++++++++++ .../Abp/MultiTenancy/MultiTenancyManager.cs | 74 ++++++------------- .../MultiTenancy/MultiTenantManager_Tests.cs | 4 +- 15 files changed, 106 insertions(+), 72 deletions(-) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{CookieTenantResolver.cs => CookieTenantResolveContributer.cs} (81%) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{DomainTenantResolver.cs => DomainTenantResolveContributer.cs} (86%) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{HeaderTenantResolver.cs => HeaderTenantResolveContributer.cs} (89%) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{HttpTenantResolverBase.cs => HttpTenantResolveContributerBase.cs} (92%) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{QueryStringTenantResolver.cs => QueryStringTenantResolveContributer.cs} (85%) rename src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/{RouteTenantResolver.cs => RouteTenantResolveContributer.cs} (87%) rename src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/{ActionTenantResolver.cs => ActionTenantResolveContributer.cs} (69%) create mode 100644 src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributer.cs create mode 100644 src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolver.cs diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs index ccf49b2666..84497abceb 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs @@ -11,10 +11,10 @@ namespace Volo.Abp.AspNetCore.MultiTenancy { services.Configure(options => { - options.TenantResolvers.Insert(0, new QueryStringTenantResolver()); - options.TenantResolvers.Insert(1, new RouteTenantResolver()); - options.TenantResolvers.Insert(2, new HeaderTenantResolver()); - options.TenantResolvers.Insert(3, new CookieTenantResolver()); + options.TenantResolvers.Insert(0, new QueryStringTenantResolveContributer()); + options.TenantResolvers.Insert(1, new RouteTenantResolveContributer()); + options.TenantResolvers.Insert(2, new HeaderTenantResolveContributer()); + options.TenantResolvers.Insert(3, new CookieTenantResolveContributer()); }); services.AddAssemblyOf(); diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributer.cs similarity index 81% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolver.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributer.cs index 2282cd9c96..ebce890ea9 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributer.cs @@ -3,7 +3,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy { - public class CookieTenantResolver : HttpTenantResolverBase + public class CookieTenantResolveContributer : HttpTenantResolveContributerBase { protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext) { diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributer.cs similarity index 86% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolver.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributer.cs index 95167fe177..2894fcf0df 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributer.cs @@ -7,11 +7,11 @@ namespace Volo.Abp.AspNetCore.MultiTenancy { //TODO: Create a better domain format. We can accept regex for example. - public class DomainTenantResolver : HttpTenantResolverBase + public class DomainTenantResolveContributer : HttpTenantResolveContributerBase { private readonly string _domainFormat; - public DomainTenantResolver(string domainFormat) + public DomainTenantResolveContributer(string domainFormat) { _domainFormat = domainFormat.RemovePreFix("http://", "https://"); } diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributer.cs similarity index 89% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolver.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributer.cs index 7b6931a6a0..f71ba9b8d4 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributer.cs @@ -8,7 +8,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy { - public class HeaderTenantResolver : HttpTenantResolverBase + public class HeaderTenantResolveContributer : HttpTenantResolveContributerBase { protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext) { @@ -37,7 +37,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy { context .ServiceProvider - .GetRequiredService>() + .GetRequiredService>() .LogWarning(text); } } diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolverBase.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributerBase.cs similarity index 92% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolverBase.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributerBase.cs index aae63eef8d..7059eef9a8 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolverBase.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributerBase.cs @@ -7,7 +7,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy { - public abstract class HttpTenantResolverBase : ITenantResolver + public abstract class HttpTenantResolveContributerBase : ITenantResolveContributer { public virtual void Resolve(ITenantResolveContext context) { @@ -24,7 +24,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy catch (Exception e) { context.ServiceProvider - .GetRequiredService>() + .GetRequiredService>() .LogWarning(e.ToString()); } } diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributer.cs similarity index 85% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributer.cs index c0361ac6be..88bd3bcc0d 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributer.cs @@ -3,7 +3,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy { - public class QueryStringTenantResolver : HttpTenantResolverBase + public class QueryStringTenantResolveContributer : HttpTenantResolveContributerBase { protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext) { diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributer.cs similarity index 87% rename from src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolver.cs rename to src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributer.cs index 4e3c0897d6..10d4f1ebe1 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributer.cs @@ -5,7 +5,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy { - public class RouteTenantResolver : HttpTenantResolverBase + public class RouteTenantResolveContributer : HttpTenantResolveContributerBase { protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext) { diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs index 0f939a31f3..79623ff56e 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.MultiTenancy { public static void AddDomainTenantResolver(this TenantResolveOptions options, string domainFormat) { - options.TenantResolvers.Insert(0, new DomainTenantResolver(domainFormat)); + options.TenantResolvers.Insert(0, new DomainTenantResolveContributer(domainFormat)); } } } \ No newline at end of file diff --git a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolver.cs b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolveContributer.cs similarity index 69% rename from src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolver.cs rename to src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolveContributer.cs index 583eff8187..f54a3acfe1 100644 --- a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolver.cs +++ b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ActionTenantResolveContributer.cs @@ -3,11 +3,11 @@ using JetBrains.Annotations; namespace Volo.Abp.MultiTenancy { - public class ActionTenantResolver : ITenantResolver + public class ActionTenantResolveContributer : ITenantResolveContributer { private readonly Action _resolveAction; - public ActionTenantResolver([NotNull] Action resolveAction) + public ActionTenantResolveContributer([NotNull] Action resolveAction) { Check.NotNull(resolveAction, nameof(resolveAction)); diff --git a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributer.cs b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributer.cs new file mode 100644 index 0000000000..f4cfa0b353 --- /dev/null +++ b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributer.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.MultiTenancy +{ + public interface ITenantResolveContributer + { + void Resolve(ITenantResolveContext context); + } +} \ No newline at end of file diff --git a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs index 843609cbee..5d6a62ac2d 100644 --- a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs +++ b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs @@ -1,7 +1,16 @@ +using JetBrains.Annotations; + namespace Volo.Abp.MultiTenancy { public interface ITenantResolver { - void Resolve(ITenantResolveContext context); + /// + /// Tries to resolve current tenant using registered implementations. + /// + /// + /// Tenant id, unique name or null (if could not resolve). + /// + [CanBeNull] + string ResolveTenantIdOrName(); } } \ No newline at end of file diff --git a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveOptions.cs b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveOptions.cs index ef23d7e1cf..1ea7c0a0b1 100644 --- a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveOptions.cs +++ b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveOptions.cs @@ -6,11 +6,11 @@ namespace Volo.Abp.MultiTenancy public class TenantResolveOptions { [NotNull] - public List TenantResolvers { get; } + public List TenantResolvers { get; } public TenantResolveOptions() { - TenantResolvers = new List(); + TenantResolvers = new List(); } } } \ No newline at end of file diff --git a/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolver.cs b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolver.cs new file mode 100644 index 0000000000..f47cecd270 --- /dev/null +++ b/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolver.cs @@ -0,0 +1,46 @@ +using System; +using System.Linq; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.MultiTenancy +{ + public class TenantResolver : ITenantResolver, ITransientDependency + { + private readonly IServiceProvider _serviceProvider; + private readonly TenantResolveOptions _options; + + public TenantResolver(IOptions options, IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + _options = options.Value; + } + + public string ResolveTenantIdOrName() + { + if (!_options.TenantResolvers.Any()) + { + return null; + } + + using (var serviceScope = _serviceProvider.CreateScope()) + { + var context = new TenantResolveContext(serviceScope.ServiceProvider); + + foreach (var tenantResolver in _options.TenantResolvers) + { + tenantResolver.Resolve(context); + + if (context.HasResolvedTenantOrHost()) + { + return context.TenantIdOrName; + } + } + + //Could not find a tenant + return null; + } + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.MultiTenancy.Domain/Volo/Abp/MultiTenancy/MultiTenancyManager.cs b/src/Volo.Abp.MultiTenancy.Domain/Volo/Abp/MultiTenancy/MultiTenancyManager.cs index e6301a1d85..fc13dc456d 100644 --- a/src/Volo.Abp.MultiTenancy.Domain/Volo/Abp/MultiTenancy/MultiTenancyManager.cs +++ b/src/Volo.Abp.MultiTenancy.Domain/Volo/Abp/MultiTenancy/MultiTenancyManager.cs @@ -1,9 +1,5 @@ using System; -using System.Linq; -using JetBrains.Annotations; -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; namespace Volo.Abp.MultiTenancy @@ -14,24 +10,21 @@ namespace Volo.Abp.MultiTenancy { public Tenant CurrentTenant => GetCurrentTenant(); - private readonly IServiceProvider _serviceProvider; private readonly ITenantScopeProvider _tenantScopeProvider; private readonly ITenantStore _tenantStore; - private readonly TenantResolveOptions _options; private readonly ILogger _logger; + private readonly ITenantResolver _tenantResolver; public MultiTenancyManager( - IServiceProvider serviceProvider, ITenantScopeProvider tenantScopeProvider, - IOptions options, - ITenantStore tenantStore, - ILogger logger) + ITenantStore tenantStore, + ILogger logger, + ITenantResolver tenantResolver) { - _serviceProvider = serviceProvider; _tenantScopeProvider = tenantScopeProvider; _tenantStore = tenantStore; _logger = logger; - _options = options.Value; + _tenantResolver = tenantResolver; } public IDisposable ChangeTenant(Guid? tenantId) @@ -75,60 +68,39 @@ namespace Volo.Abp.MultiTenancy //TODO: Get from ICurrentUser before resolvers and fail if resolvers find a different tenant! - return GetCurrentTenantFromResolvers(); + return ResolveTenant(); } - protected virtual Tenant GetCurrentTenantFromResolvers() //TODO: This should go to another class + protected virtual Tenant ResolveTenant() { - if (!_options.TenantResolvers.Any()) + var tenantIdOrName = _tenantResolver.ResolveTenantIdOrName(); + if (tenantIdOrName == null) { return null; } - using (var serviceScope = _serviceProvider.CreateScope()) - { - var context = new TenantResolveContext(serviceScope.ServiceProvider); + Tenant tenant; - foreach (var tenantResolver in _options.TenantResolvers) + //Try to find by id + if (Guid.TryParse(tenantIdOrName, out var tenantId)) + { + tenant = _tenantStore.Find(tenantId); + if (tenant != null) { - tenantResolver.Resolve(context); - - if (context.HasResolvedTenantOrHost()) - { - if (context.TenantIdOrName == null) - { - //Resolved host! - return null; - } - - var tenant = GetValidatedTenantOrNull(context.TenantIdOrName); - if (tenant != null) - { - return tenant; - } - - _logger.LogWarning($"Resolved tenancy name '{context.TenantIdOrName}' by '{tenantResolver.GetType().FullName}' but could not find in current tenant store."); - context.TenantIdOrName = null; - } - - context.Handled = false; + return tenant; } - - //Could not find a tenant - return null; } - } - [CanBeNull] - private Tenant GetValidatedTenantOrNull([NotNull] string tenantIdOrName) - { - Guid tenantId; - if (Guid.TryParse(tenantIdOrName, out tenantId)) + //Try to find by name + tenant = _tenantStore.Find(tenantIdOrName); + if (tenant != null) { - return _tenantStore.Find(tenantId); + return tenant; } - return _tenantStore.Find(tenantIdOrName); + //Could not found! + _logger.LogWarning($"Resolved tenancy id or name '{tenantIdOrName}' but could not find in the tenant store."); + return null; } } } diff --git a/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_Tests.cs b/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_Tests.cs index b34f5be7b5..045e35d77a 100644 --- a/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_Tests.cs +++ b/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_Tests.cs @@ -42,7 +42,7 @@ namespace Volo.Abp.MultiTenancy { services.Configure(options => { - options.TenantResolvers.Add(new ActionTenantResolver(context => + options.TenantResolvers.Add(new ActionTenantResolveContributer(context => { if (_tenantToBeResolved == _tenantA) { @@ -50,7 +50,7 @@ namespace Volo.Abp.MultiTenancy } })); - options.TenantResolvers.Add(new ActionTenantResolver(context => + options.TenantResolvers.Add(new ActionTenantResolveContributer(context => { if (_tenantToBeResolved == _tenantB) {