我正在尝试使用Simple Injector做一些基本的构造函数DI,看来它无法解决Web API控制器的依赖关系。
我在“ Controllers”文件夹之外的“ API”文件夹中有一个API控制器。
我也尝试将其放置在“ Controllers”文件夹中,但这似乎并没有太大的区别。我收到的堆栈跟踪类似于此问题中介绍的跟踪。
我正在使用全新安装的“ Simple Injector MVC集成快速入门” NuGet软件包(v。2.1.0)。
我有SimpleInjectorWebApiDependencyResolver文档的基础,也与此处的文档相同。
我正在使用Entity Framework,并且查看了有关正确加载上下文的更改的讨论线程。
这似乎不是问题,但是我仍然收到以下错误:
类型'MyProject.API.ArticleController'没有默认的构造函数
System.ArgumentException在
System.Web.Http.Internal.TypeActivator.System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage请求,类型controllerType的System.Linq.Expressions.Expression.New(类型类型) ,Func`1&activator)在System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage请求,HttpControllerDescriptor controllerDescriptor,类型controllerType)
如果有人可以向我提供一些建议,关于是否应从其当前状态/呼叫顺序进行任何修改,将不胜感激。
ArticleController(基本结构):
public class ArticleController : ApiController
{
private readonly IArticleRepository articleRepository;
private readonly IUserRepository userRepository;
private readonly IReleaseRepository releaseRepository;
public ArticleController(IArticleRepository articleRepository, IUserRepository userRepository, IReleaseRepository releaseRepository)
{
this.articleRepository = articleRepository;
this.userRepository = userRepository;
this.releaseRepository = releaseRepository;
}
// GET api/Article
public IEnumerable<Article> GetArticles(){ // code }
// GET api/Article/5
public Article GetArticle(int id){ // code }
// PUT api/Article/5
public HttpResponseMessage PutArticle(int id, Article article){ // code }
// POST api/Article
public HttpResponseMessage PostArticle(ArticleModel article){ // code }
// DELETE api/Article/5
public HttpResponseMessage DeleteArticle(int id){ // code }
}
慕妹3146593
相关分类