我用Web API 2创建了一个新的MVC5项目,然后我从NuGet添加了Ninject.MVC3包.
构造函数注入适用于MVC5控制器,但在尝试将其与Web API控制器一起使用时出现错误.
尝试创建"UserProfileController"类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.
工作MVC5控制器的构造函数:
public class HomeController : Controller
{
private IMailService _mail;
private IRepository _repo;
public HomeController(IMailService mail, IRepository repo)
{
_mail = mail;
_repo = repo;
}
}
Run Code Online (Sandbox Code Playgroud)
非工作Web API控制器的构造函数:
public class UserProfileController : ApiController
{
private IRepository _repo;
public UserProfileController(IRepository repo)
{
_repo = repo;
}
}
Run Code Online (Sandbox Code Playgroud)
下面是完整的NinjectWebCommon.cs文件:
[assembly: WebActivator.PreApplicationStartMethod(typeof(DatingSite.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(DatingSite.App_Start.NinjectWebCommon), "Stop")]
namespace DatingSite.App_Start
{
using System;
using System.Web;
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using Ninject;
using Ninject.Web.Common;
using DatingSite.Services;
using DatingSite.Data;
public static class …
Run Code Online (Sandbox Code Playgroud)