asp.net MVC 4 - 在依赖项解析器中注册 Unity 时出错



错误:

类型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);
    

最新更新