【问题标题】:How to separate webapi controllers in their own app domain?如何在自己的应用程序域中分离 webapi 控制器?
【发布时间】:2014-11-17 23:02:22
【问题描述】:

我正在集思广益,关于如何将 Web api 控制器隔离到它们自己的“模块”中,这些“模块”可以混合在一起成为一个单一的 webapi 应用程序。但是,我想将它们和它们的依赖关系相互隔离,因为可能会存在程序集版本冲突。我一直想知道这是否可以通过每个控制器的不同应用程序域来实现。有人有这方面的经验吗?

【问题讨论】:

    标签: design-patterns asp.net-web-api appdomain isolation


    【解决方案1】:

    bin 文件夹中的任何内容都将加载到当前应用程序域中,因此通常这不是问题。但是,当避免版本冲突时,您可以使用自定义程序集解析器将多个程序集/版本加载到同一个 AppDomain 中。这将允许您将其他程序集拉入 web api 的 AppDomain。

    public class CustomAssemblyResolver : DefaultAssembliesResolver { public override ICollection GetAssemblies() { // load all of your assemblies and return } }

    然后,您将替换配置中 web api 的默认程序集解析器。

    config.Services.Replace(typeof(IAssembliesResolver), new CustomAssemblyResolver());

    当 web api 去搜索程序集以查找控制器时,它现在将拉入所有其他程序集。有关更详细的说明,请参阅this example

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 2019-07-23
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多