Can anybody point me in the right direction to get Ninject working with WCF Web API Preview 5? I have it successfully up and running in my ASP.NET MVC 3 project and also in
Following is my code with Ninject and WebApi,it works. Create a class inherites from WebApiConfiguration
public class NinjectWebApiConfiguration : WebApiConfiguration {
private IKernel kernel = new StandardKernel();
public NinjectWebApiConfiguration() {
AddBindings();
CreateInstance = (serviceType, context, request) => kernel.Get(serviceType);
}
private void AddBindings() {
kernel.Bind<IProductRepository>().To<MockProductRepository>();
}
}
and use the NinjectWebApiConfiguration in RegisterRoutes
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
var config = new NinjectWebApiConfiguration() {
EnableTestClient = true
};
routes.MapServiceRoute<ContactsApi>("api/contacts", config);
}
There are great answers to the question here but I would like to show you the way with default WebApi configuration:
protected void Application_Start(object sender, EventArgs e) {
RouteTable.Routes.SetDefaultHttpConfiguration(new Microsoft.ApplicationServer.Http.WebApiConfiguration() {
CreateInstance = (serviceType, context, request) => GetKernel().Get(serviceType)
});
RouteTable.Routes.MapServiceRoute<People.PeopleApi>("Api/People");
}
private IKernel GetKernel() {
IKernel kernel = new StandardKernel();
kernel.Bind<People.Infrastructure.IPeopleRepository>().
To<People.Models.PeopleRepository>();
return kernel;
}
The below blog post talks a little bit about Ninject integration on WCF Web API:
http://www.tugberkugurlu.com/archive/introduction-to-wcf-web-api-new-rest-face-ofnet
In P5 you have to derive from WebApiConfiguration and use your derived configuration:
public class NinjectConfiguration : WebApiConfiguration
{
public NinjectConfiguration(IKernel kernel)
{
CreateInstance((t, i, m) =>
{
return kernel.Get(t);
});
}
}