7
是否可以使用Ninject将依赖关系注入到WebApiConfig类中?在Web API中向WebApiConfig注入Ninject依赖关系2
这是我的WebApiConfig类。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Services.Replace(typeof(IExceptionHandler), new ErrorHandlerMessageHandler(*NEEDS DEPENDENCY*));
}
}
这是我NinjectHttpApplication声明
public class WebApiApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
GlobalConfiguration.Configure(WebApiConfig.Register);
}
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
private void RegisterServices(IKernel kernel)
{
//bindings
}
}
感谢这个帖子博客文章帮助了我,但是我认为如果他们将WebAPI添加到现有的MVC项目中,一些人会拥有这个NinjectWebCommon类。我发现下面这行是我需要添加的:'GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(_kernel);'在'CreateKernel'方法中'RegisterServices(_kernel)'调用之后。请注意,这是Ninject.Web.WebApi命名空间中的'NinjectDependencyResolver'(可能需要下载单独的NuGet包)。谢谢! – Jordan 2015-10-02 13:24:25
我仍在试图弄清楚如何做到这一点。我的NinjectWebCommon类已经包含该行,但是即使我有一个用[Inject]属性装饰的属性,依赖关系也没有被注入。有什么想法吗? – 2017-08-01 15:56:34
您是否移动了您的博客?似乎它不再可用。 – 2017-08-01 15:57:29