【发布时间】:2016-12-17 07:47:10
【问题描述】:
我正在为多租户应用程序使用 saaskit 多租户项目。
我能够创建租户上下文并能够访问所有控制器。
但是,有时它会给我以下错误
发生未处理的异常:无法解析服务 尝试激活时键入“LMS.Model.AppTenant” 'LMS.Controllers.OrganizationController'。
对于任何控制器和执行的任何操作方法,此错误都是随机发生的。错误的性质并不特定于任何控制器/操作方法。
我可以看到我的代码成功进入了 TenantResolver,它实际上返回了一个租户,但是当 DI 将其注入我的控制器时,它会抱怨列出的错误
发生此错误后,我的应用程序完全停止并显示白屏。
此问题发生在生产服务器上,而不是本地主机上。
对此有任何帮助!
租户像这样注入到所有控制器中
public class HomeController
{
public HomeController(TenantContext<AppTenant> tenantContext)
{
}
}
以下是使tenantContext可注入的扩展类
public static class MultitenancyServiceCollectionExtensions
{
public static IServiceCollection AddMultitenancy<TTenant, TResolver>(this IServiceCollection services)
where TResolver : class, ITenantResolver<TTenant>
where TTenant : class
{
Ensure.Argument.NotNull(services, nameof(services));
services.AddScoped<ITenantResolver<TTenant>, TResolver>();
// Make Tenant and TenantContext injectable
services.AddScoped(prov =>
prov.GetService<IHttpContextAccessor>()?.HttpContext?.GetTenant<TTenant>());
services.AddScoped(prov =>
prov.GetService<IHttpContextAccessor>()?.HttpContext?.GetTenantContext<TTenant>());
// Ensure caching is available for caching resolvers
services.AddMemoryCache();
return services;
}
}
对此的任何帮助表示赞赏!
【问题讨论】:
标签: c# dependency-injection asp.net-core asp.net-core-mvc saaskit