I have a new MVC Web Project which i am usin MVC and WebApi in. I have setup Simple Injector (version 2.5.2 from nuGet) using the following code in my global file
For Web API Projects, the SetResolver method described above will compile but when the application is run, you'll get an ArgumentException error: "Additional information: The type SimpleInjector.Integration.WebApi.SimpleInjectorWebApiDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator."
You'll resolved this issue by setting the DependencyResolver to a SimpleInjectorWebApiDependencyResolver and pass in your container, like below.
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
The reason for getting this error is because you are missing the following registration (as explained in the MVC integration guide):
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
MVC and Web API both have their own abstraction for resolving dependencies (both called 'dependency resolver'). Since you didn't set the resolver for MVC, MVC uses the default resolution mechanism for creating MVC controllers, but this requires controllers to have a default constructor.
Calling DependencyResolver.SetResolver
will solve the problem.