无法使用webapi,oauth,owin和ninject进行身份验证或注入依赖关系

时间:2015-03-23 23:47:50

标签: asp.net-web-api oauth ninject owin

我有以下启动代码

public void Configuration(IAppBuilder app)
{
   var config = new HttpConfiguration();
   var kernel = NinjectConfig.CreateKernel();
   app.UseNinjectMiddleware(() => kernel);
   app.UseNinjectWebApi(GlobalConfiguration.Configuration);
   OAuthConfig.Configure(app, kernel);
   WebApiConfig.Register(config);
   app.UseWebApi(config);
}

有了这个,我可以毫无问题地授权,但我不能注入它抛出的依赖

  

尝试创建类型为' DummyController'的控制器时发生错误。确保控制器具有无参数的公共构造函数

如果我在启动方法中使用此设置

public void Configuration(IAppBuilder app)
{
   var config = new HttpConfiguration();
   var kernel = NinjectConfig.CreateKernel();
   app.UseNinjectMiddleware(() => kernel);
   app.UseNinjectWebApi(config); //THIS LINE CHANGED
   OAuthConfig.Configure(app, kernel);
   WebApiConfig.Register(config);
   //app.UseWebApi(config);
}

授权失败,但是如果我从控制器中删除授​​权属性则依赖注入工作

配置中缺少什么?

1 个答案:

答案 0 :(得分:0)

正确的配置

public void Configuration(IAppBuilder app)
{
    var config = new HttpConfiguration();
    var kernel = NinjectConfig.CreateKernel();
    app.UseNinjectMiddleware(() => kernel);
    OAuthConfig.Configure(app, kernel);
    WebApiConfig.Register(config);
    app.UseNinjectWebApi(config);
} 

只需在配置结束时调用UseNinjectWebApi,此方法调用UseWebApi,现在一切正常