c# - ASP.NET 5 每个路由、应用程序部分或功能使用不同的服务容器
问题描述
我试图弄清楚如何为 ASP.NET Core (.NET 5) 应用程序中的不同路由/端点配置不同服务容器的使用。
背景是我们在 ASP.NET 4.x 上有一个应用程序,它允许插件注册自己的路由/端点(在可配置的前缀下——这也是我需要在 ASP.NET Core 中弄清楚的)——每个这样的插件拥有自己的 Castle Windsor 容器,它可以使用我们在该容器中预先注册的服务注册服务和其他内容。此容器还用于为该特定插件激活任何 ASP.NET WebApi 控制器。
我们通过在 ASP.NET 4 WebAPI/MVC 之上构建一些自定义路由来做到这一点,其中路由包含有关它来自哪个上下文(核心应用程序或插件)的信息,并自动添加前缀。
但是,ASP.NET Core WebAPI/MVC 改变了很多事情,我不知道如何获得相同的结果。
因为这是由插件驱动的,所以显然不必在 PER 路由的基础上完成,而是 PER 插件就足够了(这将是一组具有相同前缀的路由),所以我一直在试图弄清楚其中任何一个都为我提供了一条可行的道路:
- 应用部件
- 功能提供者(容器应用程序部分)
- 控制器激活器
我确实尝试了上述所有方法的组合,其中 ApplicationPart 将返回类型的自定义实现,让我们将有关控制器的额外信息传递给 IControllerActivator。但是 ASP.NET Core 需要 RuntimeType 而不仅仅是任何“TypeInfo”实现。
解决方案
我有一个类似的问题,并遇到了这篇博客文章,它提供了一个使用不同IServiceCollection
s 表示不同路由前缀的示例。我认为你可以调整它以获得你想要的。
显然作者还在WebAPIContrib.Core 库中发布了代码(这里是nuget 包)。
推荐阅读
- javascript - React-router-dom 链接在我的项目上不起作用
- xcode - 如何隐藏iOS模拟器工具栏?
- oracle - 简单的 ODPI-C 语句执行示例给出 ORA-00922
- android - 在 Android Studio 中安装 Chaquo.python 失败
- winforms - 如何将 FluentDesignForm 与 RibbonControl 一起使用?
- python - 使用 Python 和 BeautifulSoup 从 Yahoo Finance 抓取股票价格
- python-3.x - 我无法用 pip 安装 cupy
- java - Sprint Reactor Filter vs IF Then
- css - 无法通过编辑子主题 CSS 更改 WooCommerce“感谢您的订单”页面的外观
- go - Go:使用存储在 SmartCard 上的客户端证书的 HTTPS 请求 (Windows)