Usm*_*lid 1 .net onion-architecture simple-injector asp.net-web-api asp.net-identity
我正在关注我的Web API和AngularJS项目的Onion架构.在Infrastructure.DependencyResolution部分中,我使用的是Simple Injector.这是我的代码:
[assembly: PreApplicationStartMethod(typeof(IocConfig), "RegisterDependencies")]
namespace Infrastructure.DependencyResolution
{
public class IocConfig
{
private static Container _container;
public static void RegisterDependencies()
{
_container = new Container();
_container.Verify();
_container.RegisterWebApiRequest<IEntitiesContext>(() =>
{
return new MyContext();
});
_container.RegisterWebApiRequest<IUserRepository, UserRepository>();
_container.RegisterWebApiRequest<IAccountService, AccountService>();
_container.RegisterWebApiRequest<IUnitOfWork, UnitOfWork>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试将url转到我的帐户控制器,我收到此错误:
尝试创建"AccountController"类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.
我搜索并发现Simple Injector有一些不同的Web Api代码,如他们的网站所建议的那样:
// This is an extension method from the integration package.
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
Run Code Online (Sandbox Code Playgroud)
我也复制了它,但它不接受GlobalConfiguration.Configuration,我想是因为我在库项目中使用它.
当我在RegisterDependencies方法中设置断点时,Visual Studio不会在断点处停止.
有人能告诉我去哪儿的路吗?
您缺少的是Web API集成指南中SimpleInjectorWebApiDependencyResolver所述的注册:
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
如果不重写Web API的默认设置IDependencyResolver,Web API将仅尝试实例化控制器实例,这要求控制器类型具有默认构造函数.通过将此替换为控制器实例IDependencyResolver的SimpleInjectorWebApiDependencyResolver请求,将其转发到Simple Injector容器.
使用Simple Injector的Web API快速入门NuGet包时,您将获得最大的成功.这将引导您的应用程序,并允许您快速入门.
| 归档时间: |
|
| 查看次数: |
1626 次 |
| 最近记录: |