加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:41:22 所属栏目:asp.Net 来源:网络整理
导读:我正在集思广益,讨论如何将web api控制器隔离到他们自己的“模块”中,这些模块可以混合到一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读