c# - ASP.NET 5 对每个路由、应用程序部分或功能使用不同的服务容器

标签 c# asp.net-core

我试图弄清楚如何在 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 插件已经足够好了(这将是同一前缀下的一组路由),所以我一直在试图弄清楚其中任何一个都为我提供了可行的途径:

  • 应用配件
  • Feature Providers(即容器应用程序部分)
  • Controller 激活器

  • 我确实尝试了上述所有方法的组合,其中 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/

    相关文章:

    asp.net-core - 如何在 Entity Framework Core 中创建与同一实体的两个一对一关系

    c# - Azure服务总线队列避免跨环境读取消息

    c# - 复杂分组依据

    c# - Async GetAwaiter() 抛出奇怪的异常

    ubuntu - 如何将 SSL 证书添加到 asp.net core docker swarm +letsencrypt?

    asp.net-core - 带有 EF Core 更新实体 howto 的 ASP.Net 核心 Web Api

    c# - .net Core 2.0 - 使用 .NetFramework 4.6.1 而不是目标框架 .netCore 2.0 恢复了包。该软件包可能不完全兼容

    C# Convert.ToInt16(String) C 等价物

    c# - 使用 For 循环比较和删除列表项

    c# - 正则表达式仅在 URL 参数后跟以 "&"结尾的内容时才在 URL 参数中拆分 "="