ABP与现有系统集成——Web Api

问题的提出

我们需要在现有系统中使用ABP模块,在启动时,只要在现有系统的Global中使用AbpBootStrapper进行初始化,就可以使用ABP模块。比如:

 using (var bootstrapper = Abp.AbpBootstrapper.Create<PoemGame.WebApi.PoemGameWebApiModule>())
    {

        bootstrapper.Initialize();
    }
        

这样似乎可以了,Abp模块相关的动态Web Api可以访问。但如果访问现有系统,会发现,现有系统的Web Api无法使用了。

问题的原因

进一步研究发现,当Abp模块启动后,所有控制器的访问都需要通过Abp的依赖注入机制,而现有系统的Web Api没有在Abp的容器中注册,因此会出现问题。

解决办法

我们可以bootstrapper初始化之后,注册现有的web api控制器,这样,就可以访问了。比如:

using (var bootstrapper = Abp.AbpBootstrapper.Create<PoemGame.WebApi.PoemGameWebApiModule>())
            {

                bootstrapper.Initialize();
                bootstrapper.IocManager.Register(typeof(PlatWebApi.Controllers.ValuesController));
                bootstrapper.IocManager.Register(typeof(PlatWebApi.Controllers.AccountController));
            }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容