我有以下启动代码
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);
}
授权失败,但是如果我从控制器中删除授权属性则依赖注入工作
配置中缺少什么?
答案 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,现在一切正常