gpt4 book ai didi

asp.net-mvc - 将 Ninject 与 Asp.NET Web API Beta ApiController 结合使用

转载 作者:行者123 更新时间:2023-12-01 19:46:50 26 4
gpt4 key购买 nike

我被困住了。我正在使用此处概述的方法用于 wcf web api p6 Ninject working with WCF Web API Preview 5 ,但是事情与 Beta 版中的 mvc 实现有很大不同。这里有一篇好文章http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver这谈到了构建您自己的自定义依赖关系解析器,但是我想使用与我的 mvc View Controller 使用的相同的实现...例如忍者。我也根据文章中的 IoC Unity 示例尝试了一些方法,但还没有任何结果。任何帮助我指明正确方向的帮助将不胜感激。我也会继续自己挖掘。提前致谢!

这就是我现在所处的位置。我使用 WebActivator 来引导代码,但后来我把它放到了 Application_Start() 中,只是为了从等式中多取一件事。

    protected void Application_Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new NinjectDependencyResolver(kernel));
}

并且收到以下错误:
Ninject.Web.Mvc.NinjectDependencyResolver 类型似乎未实现 Microsoft.Practices.ServiceLocation.IServiceLocator。
参数名称:commonServiceLocator

找到解决方案
也许有/将会有一种更优雅的方式,但这现在对我有用。我还在这里添加了我的自定义消息处理程序。

[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart.ApiBootstrapper), "Start")]
namespace MyApp.AppStart
{
public class ApiBootstrapper
{
public static void Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
var resolver = new NinjectDependencyResolver(kernel);
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(resolver.GetService, resolver.GetServices);
GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiAuthHandler());
}
}
}

最佳答案

我从未使用过 WebAPI,但由于 IDependencyResolver 的语义与 MVC3 中的语义完全相同,您应该能够使用相同的实现:https://github.com/ninject/ninject.web.mvc/blob/master/mvc3/src/Ninject.Web.Mvc/NinjectDependencyResolver.cs

更新:Ninject.Web.WebAPi 扩展添加了对 ApiController 的支持

关于asp.net-mvc - 将 Ninject 与 Asp.NET Web API Beta ApiController 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com