Unity registration error in DependencyResolver

Error:

The Unity.WebApi.UnityDependencyResolver type does not seem to implement Microsoft.Practices.ServiceLocation.IServiceLocator.

I saw this question WebApi.UnityDependencyResolver does not implement Microsoft.Practices.ServiceLocation.IServiceLocator. Parameter: commonServiceLocator , but my error is on this line:

DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 

full class:

 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; } } 

Note : with this I get the same error:

  var container = BuildUnityContainer(); GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 
+6
source share
1 answer

ASP.Net MVC and Web.API use two different dependency recognition frameworks .

Your problem is that you are trying to use Unity.WebApi.UnityDependencyResolver also for MVC controllers. To set unity right, follow the instructions below:

To get Unity to work with MVCs, those that come from Controller

  • install Unity.Mvc3 nuget package
  • configure the re-dependecy tool with DependencyResolver.SetResolver :

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

For Unity to work with Web.API controllers, those that get the ApiController form

  • install Unity.WebAPi nuget package
  • install the dependency converter using GlobalConfiguration.Configuration :

     GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); 
+5
source

All Articles