错误:
类型Unity.WebApi.UnityDependencyResolver似乎没有实现Microsoft.Practices.ServiceLocation.IServiceLocator。
我看到这个问题WebApi.UnityDependencyResolver没有实现Microsoft.Practices.ServiceLocation.IServiceLocator。参数:通用服务定位器,但我的错误在这一行:
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
完整类:
public static class Bootstrapper
{
public static void Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container)); // <-- error
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
}
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<IAutenticacionDbContext, AutenticacionDbContext>();
return container;
}
}
注意:有了这个,我得到同样的错误:
var container = BuildUnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
ASP.Net MVC和Web.API使用两种不同的依赖解析器基础结构。
您的问题是您尝试将Unity.WebApi.UnityDependencyResolver
也用于 MVC 控制器。要正确设置 unity,请按照以下说明操作:
为了使 Unity 与 MVC 控制器配合使用,这些控制器派生自 Controller
- 安装 Unity.Mvc3 nuget 包
-
使用
DependencyResolver.SetResolver
设置依赖关系管理器:DependencyResolver.SetResolver( new Unity.Mvc3.UnityDependencyResolver(container));
为了使 Unity 与 Web.API 控制器配合使用,派生出ApiController
- 安装 Unity.WebAPi nuget 包
-
使用
GlobalConfiguration.Configuration
设置依赖项解析程序:GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);