小编use*_*835的帖子

简单的注入器无法在Web API控制器中注入依赖项

我试图用Simple Injector做一些基本的构造函数DI,似乎它无法解析Web API控制器的依赖关系.

  • 我在"API"文件夹中有一个API控制器,它位于"Controllers"文件夹之外.
  • 我也尝试将它放在"控制器"文件夹中,但这似乎并没有多大区别.我收到的堆栈跟踪与此问题中提供的类似.
  • 我正在使用全新安装的"Simple Injector MVC Integration Quick Start"NuGet Package(v.2.1.0).
  • 我有SimpleInjectorWebApiDependencyResolver文档的基础,这也是在这里找到的.
  • 我正在使用Entity Framework,并查看了有关更改以正确加载上下文的讨论主题.

这似乎不是问题,但我仍然收到以下错误:

类型"MyProject.API.ArticleController"没有默认构造函数

System.ArgumentException at

System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator的System.Web.Http.Internal.TypeActivator.Create [TBase](Type instanceType)中的System.Linq.Expressions.Expression.New(Type type)(HttpRequestMessage请求,类型为controllerType) System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType),Func`1&activator)

如果有人可以提供一些关于是否应该从其当前状态/呼叫顺序修改任何内容的建议,将不胜感激.

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(){ // …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection simple-injector asp.net-web-api

41
推荐指数
1
解决办法
4万
查看次数