6

エラー:

タイプUnity.WebApi.UnityDependencyResolverは、Microsoft.Practices.ServiceLocation.IServiceLocatorを実装していないようです。

この質問を見たWebApi.UnityDependencyResolverはMicrosoft.Practices.ServiceLocation.IServiceLocatorを実装していません。パラメータ:commonServiceLocatorですが、私のエラーは次の行にあります:

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));
4

1 に答える 1

5

ASP.Net MVCとWeb.APIは、2つの異なる依存関係リゾルバーインフラストラクチャを使用しています。

あなたの問題はUnity.WebApi.UnityDependencyResolver、MVCコントローラーにも使用しようとしていることです。ユニティを正しく設定するには、以下の手順に従ってください。

UnityをMVCコントローラーで動作させるには、Controller

  • Unity.Mvc3nugetパッケージをインストールします
  • を使用して依存関係のreolverを設定しますDependencyResolver.SetResolver

    DependencyResolver.SetResolver(
        new Unity.Mvc3.UnityDependencyResolver(container));
    

UnityをWeb.APIコントローラーと連携させるには、フォームを派生させるコントローラーを使用しますApiController

  • Unity.WebAPinugetパッケージをインストールします
  • を使用して依存関係リゾルバーを設定しますGlobalConfiguration.Configuration

    GlobalConfiguration.Configuration.DependencyResolver = 
        new Unity.WebApi.UnityDependencyResolver(container);
    
于 2013-01-28T06:04:16.273 に答える