Substantive.AspNetCore.MultiTenant 9.17.25-build20260210r1

This package provides a standardized way to configure Finbuckle.MultiTenant for ASP.NET Core applications, with first-class support for Razor Pages, multiple tenant stores, and pluggable tenant resolution strategies.

A. Installation

1. Install the package

Install the package via NuGet or update directly in the .csproj file.

<PackageReference Include="Substantive.AspNetCore.MultiTenant" Version="1.*" />

2. Add configuration

Add the configuration below to the appsettings.json or to the configuration provider you are using.

Configure MultiTenantOptions using appsettings.json (or any other configuration provider).

Key settings:

  • Strategy – Tenant resolution strategy (Header, Route, or Host)
  • TenantStrategyParameter – Header name, route parameter, or host token depending on the strategy
  • EndpointTemplate – Required only for HTTP remote store
  • DefaultTenantInfo – Optional fallback tenant (not recommended for production)
{
   "MultiTenantOptions": {
     "Strategy": "Route",
     "TenantStrategyParameter": "tenant",
     "EndpointTemplate": "https://tenants.example.com/api/tenants/{tenantId}",
     "DefaultTenantInfo": {
       "Id": "00000000-0000-0000-0000-000000000001",
       "Identifier": "default",
       "Name": "Default Tenant"
     }
   }
}

3. Configure services

Configure the service and configuration into the service collection.

Bind options and register the appropriate tenant store.

builder.Services.AddMultiTenantWithEFCoreStore<TenantStoreDbContext, TenantInfo>(options =>
{
    builder.Configuration.GetSection(nameof(MultiTenantOptions)).Bind(options);
});

B. Choosing the correct store

Store Recommended use cases
In-memory Tests, local development, demos
EF Core Monolithic apps, Razor Pages, single database
HTTP remote Microservices, shared tenant catalog

C. Tenant resolution strategies

Strategy When to use
Header APIs, SPA backends
Route Razor Pages (for example: /{tenant}/Index)
Host SaaS with subdomains

D. Usage

B. Usages

Inject ITenantInfo or IMultiTenantContextAccessor<TenantInfo> where needed.

private readonly ITenantInfo tenant;

public IndexModel(ITenantInfo tenant)
{
    this.tenant = tenant;
}

E. Notes and best practices

  • Avoid DefaultTenantInfo in production environments
  • Do not register multiple tenant stores in the same application
  • Centralize tenant lifecycle management when using the HTTP remote store

Showing the top 20 packages that depend on Substantive.AspNetCore.MultiTenant.

Packages Downloads
Substantive.AspNetCore
Package Description
15
Substantive.AspNetCore
Package Description
17
Substantive.AspNetCore
Package Description
48
Substantive.AspNetCore
Package Description
93
Substantive.AspNetCore
Substantive ASP.NET Core package.
15
Substantive.AspNetCore
Substantive ASP.NET Core package.
16
Substantive.AspNetCore
Substantive ASP.NET Core package.
22
Substantive.AspNetCore
Substantive ASP.NET Core package.
24
Substantive.AspNetCore
Substantive ASP.NET Core package.
25
Substantive.AspNetCore
Substantive ASP.NET Core package.
26
Substantive.AspNetCore
Substantive ASP.NET Core package.
31
Substantive.AspNetCore
Substantive untitled internal package.
16
Substantive.AspNetCore
Substantive untitled internal package.
31
Substantive.AspNetCore
Substantive untitled internal package.
34
Substantive.AspNetCore
Substantive untitled internal package.
54
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
17
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
19

Version Downloads Last updated
9.17.29-build20260512R1 3 05/12/2026
9.17.29-build20260511R1 8 05/11/2026
9.17.28-build20260511R1 3 05/11/2026
9.17.28-build20260331R1 16 03/31/2026
9.17.27-build20260306R1 22 03/06/2026
9.17.26-build20260211R1 9 02/11/2026
9.17.25-build20260210R1 6 02/10/2026
9.17.24-build20260209R1 7 02/09/2026
9.17.24-build20260204R1 8 02/04/2026
9.17.23-build20260204R1 5 02/04/2026
9.17.22-build20260204R1 4 02/04/2026
9.17.21-build20260204R2 4 02/04/2026
9.17.21-build20260204R1 4 02/04/2026
9.17.20-build20260203R1 6 02/03/2026
9.17.19-build20260130R1 11 01/30/2026
9.17.18-build20260129R1 22 01/29/2026
9.17.17-build20260129R1 26 01/29/2026
9.17.17-build20260128R1 24 01/28/2026
9.17.16-build20260127R2 26 01/27/2026
9.17.16-build20260123R1 7 01/23/2026
9.17.15-build20260122R1 9 01/22/2026
9.17.14-build20260122R2 9 01/22/2026
9.17.14-build20260122R1 5 01/22/2026
9.17.14-build20260121R1 5 01/21/2026
9.17.13-build20260121R1 5 01/21/2026
9.17.12-build20260120R1 9 01/20/2026
9.17.11-build20260120R1 8 01/20/2026
9.17.10-build20260120R1 7 01/20/2026
9.17.9-build20260119R1 6 01/19/2026
9.17.8-build20260119R1 5 01/19/2026
9.17.7-build20260115R1 5 01/15/2026
9.17.6-build20260115R1 4 01/15/2026
9.17.5-build20260119R1 5 01/19/2026
9.17.5-build20260115R1 5 01/15/2026
9.17.4-build20260115R1 7 01/15/2026
9.17.3-build20260115R1 4 01/15/2026
9.17.2-build20260115R1 4 01/15/2026
9.17.2-build20260113R1 30 01/13/2026
9.17.1-build20260113R2 5 01/13/2026
9.17.1-build20260109R2 4 01/09/2026
9.17.1-build20260106R2 7 01/06/2026
9.17.1-build20251231R2 4 12/31/2025
9.17.1-build20251230R2 13 12/30/2025
9.17.1-build20251230R1 4 12/30/2025
9.17.0-build20251229R2 8 12/29/2025
9.17.0-build20251229R1 4 12/29/2025
9.17.0-build20251226R1 15 12/26/2025
9.17.0-build20251225R1 6 12/25/2025
9.16.0-build20251224R1 11 12/24/2025
9.15.3-build20251224R1 5 12/24/2025
9.15.2-build20251224R1 4 12/24/2025
9.15.1-build20251224R1 4 12/24/2025
9.15.0-build20251224R1 4 12/24/2025
9.14.4-build20251224R1 4 12/24/2025
9.14.3-build20251224R4 4 12/24/2025
9.14.2-build20251224R1 4 12/24/2025
9.14.1-build20251224R1 4 12/24/2025
9.14.0-build20251223R1 7 12/23/2025
9.3.0-build20251224R4 4 12/24/2025
9.3.0-build20251223R4 4 12/23/2025
9.3.0-build20251223R3 7 12/23/2025
9.3.0-build20251223R2 5 12/23/2025
9.3.0-build20251222R2 6 12/22/2025
9.3.0-build20251222R1 5 12/22/2025
9.2.0-build20251222R2 6 12/22/2025
9.2.0-build20251222R1 6 12/22/2025
9.1.0-build20251218R1 5 12/18/2025
9.1.0-build20251217R2 6 12/17/2025
9.1.0-build20251217R1 9 12/17/2025
9.1.0-build20251216R2 10 12/16/2025
9.1.0-build20251216R1 7 12/16/2025
9.1.0-build20251215R1 8 12/15/2025
9.1.0-build20251212R1 10 12/12/2025
9.1.0-build20251211R1 4 12/11/2025
9.1.0-build20251210R1 7 12/10/2025
9.1.0-build20251202R2 13 12/02/2025
9.1.0-build20251202R1 10 12/02/2025
9.0.5-build20251117R1 4 11/17/2025
9.0.5-build20251110R1 54 11/10/2025
9.0.5-build20251103R1 9 11/03/2025
9.0.5-build20251030R1 8 10/30/2025
9.0.5-build20251028R1 6 10/28/2025
9.0.5-build20251016R1 4 10/16/2025
9.0.5-build20250925R2 11 09/25/2025
9.0.5-build20250925R1 5 09/25/2025
9.0.5-build20250924R1 5 09/24/2025
9.0.5-build20250910R1 4 09/10/2025
9.0.5-build20250908R1 34 09/08/2025
9.0.5-build20250905R2 8 09/05/2025
9.0.5-build20250905R1 9 09/05/2025
9.0.5-build20250827R1 4 08/27/2025
9.0.5-build20250825R1 31 08/25/2025
9.0.5-build20250824R1 4 08/24/2025
9.0.5-build20250822R1 5 08/22/2025
9.0.5-build20250821R1 6 08/21/2025
9.0.4-build20250821R1 5 08/21/2025
9.0.3-build20250821R1 5 08/21/2025
9.0.2-build20250821R1 5 08/21/2025
9.0.1-build20250821R1 5 08/21/2025
9.0.0 14 08/16/2025
9.0.0-build20250821R3 5 08/21/2025
9.0.0-build20250821R2 5 08/21/2025
9.0.0-build20250821R1 5 08/21/2025
9.0.0-build20250818R2 9 08/18/2025
9.0.0-build20250818R1 6 08/18/2025
9.0.0-build20250815R1 6 08/15/2025
9.0.0-build20250814R1 5 08/14/2025
9.0.0-build20250813R1 7 08/13/2025
9.0.0-build20250722R3 89 07/22/2025
9.0.0-build20250714R3 43 07/14/2025
9.0.0-build20250714R2 6 07/14/2025
9.0.0-build20250714R1 5 07/14/2025
9.0.0-build20250710R1 13 07/10/2025
9.0.0-build20250708R1 5 07/08/2025
9.0.0-build20250707R2 13 07/07/2025
9.0.0-build20250707R1 6 07/07/2025
9.0.0-build20250629R1 12 06/29/2025
9.0.0-build20250626R2 8 06/26/2025
9.0.0-build20250626R1 7 06/26/2025
9.0.0-build20250623R1 10 06/23/2025
9.0.0-build20250621R1 15 06/21/2025
1.1.0-build20251224R1 4 12/24/2025