Simple Injector - No parameterless constructor defined for this object

后端 未结 2 2363
情深已故
情深已故 2021-02-20 18:10

I have a new MVC Web Project which i am usin MVC and WebApi in. I have setup Simple Injector (version 2.5.2 from nuGet) using the following code in my global file



        
相关标签:
2条回答
  • 2021-02-20 18:53

    For Web API Projects, the SetResolver method described above will compile but when the application is run, you'll get an ArgumentException error: "Additional information: The type SimpleInjector.Integration.WebApi.SimpleInjectorWebApiDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator."

    You'll resolved this issue by setting the DependencyResolver to a SimpleInjectorWebApiDependencyResolver and pass in your container, like below.

    GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
    
    0 讨论(0)
  • 2021-02-20 19:06

    The reason for getting this error is because you are missing the following registration (as explained in the MVC integration guide):

    DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
    

    MVC and Web API both have their own abstraction for resolving dependencies (both called 'dependency resolver'). Since you didn't set the resolver for MVC, MVC uses the default resolution mechanism for creating MVC controllers, but this requires controllers to have a default constructor.

    Calling DependencyResolver.SetResolver will solve the problem.

    0 讨论(0)
提交回复
热议问题