gpt4 book ai didi

asp.net-mvc-4 - 用于 Asp.net Web API 的 Ninject

转载 作者:行者123 更新时间:2023-12-04 18:44:13 26 4
gpt4 key购买 nike

将 Ninject 与 Web API 一起使用时出现此错误,但它适用于 MVC Controller :

Type 'App.Web.Controllers.ProductController' does not have a default constructor

NinjectControllerFactory :
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;

public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
}

public void AddBindings()
{
ninjectKernel.Bind<IProductRepository>().To<EFProductRepository>();
}
}

全局.asax.cs:
BundleConfig.RegisterBundles(BundleTable.Bundles);

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

产品 Controller :
   public class ProductController : ApiController
{
private IProductRepository repository;

public ProductController(IProductRepository ProducteRepository)
{
this.repository = ProductRepository;
}

public IEnumerable<Product> GetAllProducts()
{
return repository.Products.AsEnumerable();
}
}

最佳答案

您已覆盖 DefaultControllerFactory .但这是用于实例化 ASP.NET MVC Controller (一个派生自 System.Web.Mvc.Controller 的 Controller )。它与 ASP.NET Web API Controller (派生自 System.Web.Http.ApiController 的 Controller )完全无关。

所以基本上你在这里所做的是依赖注入(inject)到 ASP.NET MVC。如果您想将其用于 Web API,您可以查看以下指南:

  • http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/
  • http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/
  • 关于asp.net-mvc-4 - 用于 Asp.net Web API 的 Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760683/

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