微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设计模式 – 如何在自己的应用程序域中分离webapi控制器?

我正在集思广益,讨论如何将web api控制器隔离到他们自己的“模块”中,这些模块可以混合到一个webapi应用程序中.但是我想隔离它们并且它们的依赖关系彼此形成,因为可能存在程序集版本冲突.我一直想知道是否可以通过每个控制器的不同应用程序域实现这一点.有人有这方面的经验吗?

解决方法

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐