Ninject working with WCF Web API Preview 5

后端 未结 3 1772
我寻月下人不归
我寻月下人不归 2021-01-04 23:18

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

相关标签:
3条回答
  • 2021-01-04 23:45

    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);
    }
    
    0 讨论(0)
  • 2021-01-04 23:46

    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

    0 讨论(0)
  • 2021-01-04 23:55

    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);
                }); 
            }
        }
    
    0 讨论(0)
提交回复
热议问题