Jev*_*sov 39 c# asp.net-mvc autofac asp.net-web-api
我有现有的项目,它使用AutoFac作为IoC.
在注册码中我有这些线:
var resolver = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(resolver));
config.DependencyResolver = new AutofacWebApiDependencyResolver(resolver);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是DependencyResolver.SetResolver和之间的区别是什么HttpConfiguration.DependecyResolver?我为什么要指定它们?
Ste*_*ven 41
防止在同一个项目中混合使用MVC和Web API.Microsoft似乎建议这样做,因为Web API的Visual Studio模板会自动将项目与MVC混合,但这是一个坏主意.
从架构的角度来看,MVC和Web API完全不同.MVC是一种旨在优化最终用户体验的UI技术.Web API是一种Web服务技术,旨在优化(客户端)开发人员的体验.
MVC和Web API不共享任何特定于演示文稿的代码.将它们混合在同一个项目中只会使该项目变得更大,更复杂.
但也许更重要的是,两种应用程序类型都有自己的DI配置需求.他们有自己的组合根,并将其混合到单个DI配置(单个DI容器)可以使您的配置非常困难.
最后,在同一个项目中将Web API与MVC混合会导致痛苦的模糊命名冲突,因为Web API程序集包含许多与MVC对应项具有完全相同名称的类(但实现略有不同).
cuo*_*gle 39
我猜你在MVC和Web API之间混淆了:
DependencyResolver.SetResolver
Run Code Online (Sandbox Code Playgroud)
适用于MVC并属于程序集 System.Web.Mvc.除此以外:
Configuration.DependencyResolver
Run Code Online (Sandbox Code Playgroud)
对于Web APi,它属于程序集 System.Web.Http.
因此,在您的项目中,它同时使用MVC和Web Api,这就是为什么您看到两行为每个配置IoC的原因
Mar*_*nes 18
DependencyResolver.SetResolver 是一个MVC构造,需要使用MVC支持IOC.
这GlobalConfiguration.Configuration.DependencyResolver是WebApi特定的.
如果要在同一项目中同时支持MVC和WebApi,则只需要两者.
也许值得指出的是,你通常不需要明确设置DependencyResolver.SetResolver为Ninject Mvc3有一个这样的引导程序...请看这里
| 归档时间: |
|
| 查看次数: |
29021 次 |
| 最近记录: |