我试图弄清楚如何在 ASP.NET Core (.NET 5) 应用程序中为不同的路由/端点配置不同服务容器的使用。
背景是我们在 ASP.NET 4.x 上有一个应用程序,它允许插件注册自己的路由/端点(在可配置的前缀下 - 这也是我需要在 ASP.NET Core 中弄清楚的) - 每个这样的插件获得自己的 CaSTLe Windsor 容器,在该容器中它可以使用我们在该容器中预注册的服务注册服务和其他内容。此容器还用于为该特定插件激活任何 ASP.NET WebApi Controller 。
我们通过在 ASP.NET 4 WebAPI/MVC 之上构建一些自定义路由来完成此操作,其中路由包含有关它源自哪个上下文(核心应用程序或插件)的信息,并自动添加前缀。
但是,ASP.NET Core WebAPI/MVC 已经改变了很多东西,我无法弄清楚如何获得相同的结果。
因为这是由插件驱动的,显然不必在 PER 路由的基础上完成,而是 PER 插件已经足够好了(这将是同一前缀下的一组路由),所以我一直在试图弄清楚其中任何一个都为我提供了可行的途径:
我确实尝试了上述所有方法的组合,其中 ApplicationPart 将返回类型的自定义实现,从而让我们将有关 Controller 的额外信息传送到 IControllerActivator。但是 ASP.NET Core 需要 RuntimeType 而不是任何“TypeInfo”实现。
最佳答案
我有一个类似的问题,遇到了 this blog post它提供了使用不同 IServiceCollection
的示例s 用于不同的路由前缀。我认为你可以调整它以获得你想要的。
显然作者也在WebAPIContrib.Core library中发布了代码(nuget 包 here)。
关于c# - ASP.NET 5 对每个路由、应用程序部分或功能使用不同的服务容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69040975/