我正在尝试遵循 OWIN/Katana 上托管的 WebAPI 服务的洋葱架构。
我有一个这样的解决方案结构:
- DependencyResolution:包含 OWIN 启动类和 IoC 设置
- WebApi:Web API 控制器
- 基础设施:接口实现
- 核心:接口
我希望 DependencyResolution 项目为 WebApi 项目注入依赖项。DependencyResolution 确实有一个构建任务来输出到 WebApi 项目的输出文件夹。
我正在遵循此处概述的方法,使用 Autofac 和 DotNetDoodle.Owin.Dependencies NuGet 包:
http://www.tugberkugurlu.com/archive/owin-dependencies--an-ioc-container-adapter-into-owin-pipeline
但是,在我的 Startup 类中注册服务时,对 RegisterApiControllers() 的调用将失败。DependedencyResolution 程序集将首先执行,因此它将无法获取包含 ApiContollers 的程序集(WebAPI 程序集):
public IContainer RegisterServices()
{
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<MyRepo>()
.As<IRepo>()
.InstancePerLifetimeScope();
return builder.Build();
}
诉诸 Assembly.Load() 是这里唯一可行的选择,还是我应该放弃保持 DependencyResolution 项目隔离的想法,而只是从 WebApi 项目中引用它(似乎比洋葱少一点)?