How to use DI container when OwinStartup

后端 未结 3 1077
谎友^
谎友^ 2020-12-02 13:56

It\'s a Web API 2 project.

When I implement DI using Ninject, I got an error message

An error occurred when trying to create a controller of type \'TokenCont

3条回答
  •  误落风尘
    2020-12-02 14:45

    Update

    This is now more straight forward thanks to the Nuget package Ninject.Web.WebApi.OwinHost:

    Startup.cs

    using Ninject;
    using Ninject.Web.Common.OwinHost;
    using Ninject.Web.WebApi.OwinHost;
    using Owin;
    using System.Web.Http;
    
    namespace Xxx
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                var config = new HttpConfiguration();
                config.MapHttpAttributeRoutes();
                config.Routes.MapHttpRoute("DefaultApi", "myservice/{controller}/{id}", new { id = RouteParameter.Optional });
    
                app.UseNinjectMiddleware(CreateKernel);
                app.UseNinjectWebApi(config);
            }
        }
        public static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
    
            kernel.Bind().To();
            return kernel;
        }
    }
    

    I have updated the wiki accordingly.

    https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-a-OWIN-WebApi-application

    All three hosting options.

    https://github.com/ninject/Ninject.Web.WebApi/wiki/Setting-up-an-mvc-webapi-application

提交回复
热议问题