ali*_*ali 7 c# dependency-injection unity-container asp.net-web-api
我正在使用Microsoft Unity作为IoC容器的新ASP.Net Web API项目。我有些困惑,哪个是正确的。
如果我设置DependencyResolver的System.Web.Http.HttpConfiguration。然后,我可以调用具有依赖性的API控制器,并且这些依赖性已由Unity框架解决。但是,对于像HomeControllerUnity 这样的MVC控制器,DependencyResolver在我将in 设置为in 之前无法注入任何依赖项System.Web.Mvc。
API控制器依赖性已解决,但MVC控制器依赖性未解决。如果我在下面添加代码:
public class IocConfig
{
public static void Register(HttpConfiguration config)
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
config.DependencyResolver = new UnityResolver(container);
//DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
Run Code Online (Sandbox Code Playgroud)
MVC控制器依赖关系已成功解决,但API控制器依赖关系未成功解决。如果我在下面添加代码:(取消注释该行)
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
只是让您知道项目模板是ASP.Net Web API,而我正在使用Microsoft.Unity。
我应该同时设置DependencyResolver还是做错什么?
如果在同一项目中同时使用MVC和Web API,则需要设置两个解析器。如果在相同的代码位置执行此操作,则通过为解析器添加名称空间来区分它们。
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
//MVC
DependencyResolver.SetResolver(new Unity.Mvc5.UnityDependencyResolver(container));
//Web API
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
注意用于不同名称空间 DependencyResolver
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |