【发布时间】:2017-08-05 13:17:58
【问题描述】:
我正在使用 Microsoft Unity 作为 IoC 容器开发新的 ASP.Net Web API 项目。我有点困惑哪个是正确的。
如果我设置System.Web.Http.HttpConfiguration 的DependencyResolver。然后我可以调用具有依赖关系的 API 控制器,并且依赖关系正在由 Unity 框架解决。但是,对于像 HomeController 这样的 MVC 控制器,在我在 System.Web.Mvc 中设置 DependencyResolver 之前,Unity 无法注入任何依赖项。
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));
}
}
MVC 控制器依赖关系成功解决,但 API 控制器依赖关系没有。如果我添加下面的代码:(取消注释该行)
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
让您知道项目模板是 ASP.Net Web API,我使用的是 Microsoft.Unity。
我应该同时设置DependencyResolver 还是我做错了什么?
【问题讨论】:
-
如果您的项目同时包含 MVC 框架和 WebApi,您可以同时设置两者。
标签: c# asp.net-web-api dependency-injection unity-container