Reputation: 29659
I've set up a very simple dependency resolver but it is not being called for my controllers.
when I hit the HomeController GetService is called:( http:localhost:xxxx/) but (http://localhost:xxxx/api/Customers) it isn't.
In Global.asax I've put in Application_Start
DependencyResolver.SetResolver(new PoorMansResolver());
and my resolver class is
public class PoorMansResolver : IDependencyResolver
{
static readonly ICustomerRepository CustomerRepository = new CustomerRepository();
public object GetService(Type serviceType)
{
if (serviceType == typeof (CustomersController))
return new CustomersController(CustomerRepository);
else return null;
}
public IEnumerable<object> GetServices(Type serviceType)
{
return new List<object>();
}
}
Why is the resolver not being called?
Upvotes: 1
Views: 4281
Reputation: 2042
The dependency resolvers for WebAPi and MVC Controllers are in different namespaces. You'll have to implement a resolver for the two resolvers and assign them to mvc controllers and web api controllers seperately like below in the ninjectwebcommon.cs file
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
DependencyResolver.SetResolver(new NinjectDependencyResolver());
GlobalConfiguration.Configuration.DependencyResolver = new NinjectResolver(kernel);
return kernel;
}
NinjectDependencyResolver implements System.Web.Mvc.IDependencyResolver for MVC Controllers while NinjectResolver implements System.Web.Http.Dependencies.IDependencyResolver for WebApi Controllers.
Upvotes: 1
Reputation: 9508
Have you set the Resolver for both MVC4 and WebAPI?
This sets it for mvc (System.Web.Mvc):
DependencyResolver.SetResolver(new PoorMansResolver());
BUT this sets it for Web API (System.Web.Http):
GlobalConfiguration.Configuration.DependencyResolver = new PoorMansResolver();
Upvotes: 12
Reputation: 997
I'd be concerned with how/if you are wiring up your ControllerFactory. See this SO question. It's about Unity but the principle is the same.
Upvotes: 0