CoreMultitenancy
1.0.0
轻松注入服务的不同具体实现和每个租户的不同配置值。
cd src
dotnet clean && dotnet pack Multitenancy/ && dotnet build && dotnet test ../test/MultitenantAspApp.Tests/MultitenantAspApp.Tests.csproj && dotnet run --project MultitenantAspApp
您现在可以查看
http://localhost:5000/XX/api/ValuesWithDependencies
http://localhost:5000/SZ/api/ValuesWithDependencies
http://localhost:5000/XX/api/ValuesWithOptions
http://localhost:5000/SZ/api/ValuesWithOptions
请注意每个租户的不同输出。
在您的 ASP.NET 项目中,依赖于 Multitenancy 包:
dotnet add package Multitenancy
并且,在设置所有依赖项后,为每个租户设置覆盖/单独依赖项:
services . ConfigureTenant ( t =>
{
t . TenantId = "SZ" ;
t . ServiceCollection . AddTransient < IHelloWorldService , SzHelloWorldService > ( ) ;
t . ServiceCollection . Configure < ValuesControllerOptions > ( o =>
{
o . Value1Value = 42 ;
o . Value2Value = "value1_configured_by_delegate_for_SZ" ;
} ) ;
} ) ;
在Configure
方法中添加中间件
app . UseMultitenancy ( ) ;
添加路由前缀。
如果您希望能够将string tenantId
参数传递给您的控制器操作,您可以添加一个路由前缀来标识租户并将其传递给您的操作方法。
为此,在Startup.cs
文件中,您必须将ConfigureServices
方法中的 Mvc 注册更改为
services . AddMvcCore ( ) ;
到
services . AddMvcCore ( o => { o . UseTenantRoutePrefix ( ) ; } )
您可以通过使用所需名称调用UseTenantRoutePrefix()
来更改tenantId
的默认名称: UseTenantRoutePrefix("tenantIdentifier")
。