我开始使用autofac的多租户集成,我有一个问题: 我可以添加仅适用于特定租户的控制器吗? 我知道你可以重写一个注册在基本容器中的控制器,但是我想要一个仅适用于注册租户的控制器? 这可能吗?我可以使用autofac添加租户特定的控制器吗?
1
A
回答
3
虽然我还没有尝试过,但我相信你可以通过一些手动注册来做到这一点。
问题是,如果您使用builder.RegisterControllers(theAssembly)
自动注册主容器中的所有控制器,则所有控制器将自动被选中 - 包括租户特定控制器。 (假设租户特定的一个在组装中与其他一切相关)。
为了让自己更容易,您可能需要将租户特定的东西拆分为单独的程序集。然后为了获得只有一个租户的控制器,它会是这样的:
var builder = new ContainerBuilder();
builder.RegisterControllers(commonControllerAssembly);
var appContainer = builder.Build();
var tenantStrategy = new MyTenantIdentificationStrategy();
var mtc = new MultitenantContainer(tenantStrategy, appContainer);
// Register the tenant-specific stuff when you configure the tenant.
mtc.ConfigureTenant(
"tenant-1",
b => b.RegisterControllers(tenantControllerAssembly));
// And don't forget to set the resolver.
DependencyResolver.SetResolver(new AutofacDependencyResolver(mtc));
就像任何其他承租人特定的依赖关系。
当MVC尝试解析控制器的一个实例时,它会从DependencyResolver中执行此操作,该操作将以多租户方式运行并且只有在右租户发出请求时才能解析控制器。如果其他租户向该控制器发出请求,则控制器将不会在注册组件列表中找到,因此他们会收到错误消息。
请注意,如果你把你的控制器不是由主应用程序组件引用一个单独的程序,你可能还需要告诉它或控制器类型的ASP.NET编译系统将无法正确找到。将它添加到列表system.web/compilation/assemblies
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="The.Name.Of.Your.Assembly.Here" />
</assemblies>
</compilation>
</system.web>
</configuration>
但是,就像我说的,我还没有尝试过。我只做过控制器覆盖。
相关问题
- 1. WSO2:我可以将Facebook或Google用户分配给特定租户吗?
- 2. 我可以为控制器添加参数吗?
- 3. 我可以添加一个导航控制器到ModalViewController吗?
- 4. 我可以将定制控件添加到色带吗?
- 5. 我可以限制特定用户组的CQ5模板吗
- 6. ASP.NET MVC多租户使用Autofac和Owin
- 7. 我可以使用全局过滤器处理不同的多租户吗?
- 8. SpringMVC:我可以指定@ModelAttribute只填充特定的控制器方法吗?
- 9. Autofac,运行时添加租户的最佳实践?
- 10. 我可以控制GPU中的特定群集吗?
- 11. 可以在控制器内使用$控制器吗?
- 12. 我可以重写控制器ActionAttribute吗?
- 13. 我可以为用户和管理员使用相同的控制器吗?
- 14. 我可以在MVC控制器中使用Profile的动态特性吗?
- 15. 在Office加载项中,我可以知道用户属于哪个租户吗?
- 16. 我可以在ZF2的控制器中使用$ this-> hybridauthinfo()吗?
- 17. 我可以将频道添加到特定的conda环境吗?
- 18. 我可以根据控制器ID在页面中使用控制器吗?
- 19. 我可以在另一个控制器内使用控制器吗?
- 20. 可以不加控制,用户控件
- 21. laravel - 我可以从控制器创建控制器吗?
- 22. 我可以从控制台清除特定文本吗?
- 23. 使用Spring可以确定控制器级别的sessionFactory吗?
- 24. 我可以配置cxf使用特定的XML解析器吗?
- 25. 我可以从codeigniter中的插件加载控制器吗?
- 26. 上Autofac定制lifetimescopes与多租户需要指导
- 27. 我可以指定默认的“使用”s被resharper添加吗?
- 28. 我们可以使用Android手机控制机器人吗?
- 29. 我可以在观察者中使用控制器方法吗?
- 30. 我可以在指令中使用模块级控制器吗?
你是对的;控制器获得了租户注册。调试过了一会儿,我发现DefaultControllerFactory没有找到控制器的正确类型(所以它要求的DependencyResolver之前失败)我还在工作之上,但它不是autofac的错,所以我会接受你的回答 – dmorganb
我更新了我的答案,包括一些关于这方面的信息。 –