Я наблюдал tutorial от Pluralsight, когда я наткнулся на эту проблему: Искал этот сайт и нашел (Simple Injector Unable to Inject Dependencies in Web API Controllers, Make sure that the controller has a parameterless public constructor error) различные решения, но они не работают либо. Имея ту же проблему, что и при использовании WebApi и Ninject, автор ничего не делал при написании кода, не знаю, почему я столкнулся с этим, хотелось бы, чтобы кто-то объяснил причину вместе с решением (что писать и где писать) , Вот код:Web API с Ninject Беспараметрическая Конструктор
//NinjectWebCommon.cs
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IRepository>().To<Repository>().InRequestScope(); //for making singleton
kernel.Bind<WebAPIandEFContext>().To<WebAPIandEFContext>().InRequestScope();
}
//Order Controller
public class OrderController : ApiController
{
private IRepository _repo;
public OrderController(IRepository repo)
{
_repo = repo;
}
//remaining code....
ERROR description
{"$id":"1","Message":"An error has occurred.","ExceptionMessage":"An error
occurred when trying to create a controller of type 'OrderController'. Make sure that the controller has a parameterless public constructor.","ExceptionType":"System.InvalidOperationException","StackTrace":" at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)\r\n at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()","InnerException":{"$id":"2","Message":"An error has occurred.","ExceptionMessage":"Type 'WebAPIandEF.Controllers.OrderController' does not have a default constructor","ExceptionType":"System.ArgumentException","StackTrace":" at System.Linq.Expressions.Expression.New(Type type)\r\n at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)"}}
сделать это, но до сих пор получаю эту ошибку в InjectInitializer.cs Нет перегрузки для метода «GetControllerTypes» принимает аргументы 0 \t на этой линии: Еогеасп (вар controllerType в typeResolver.GetControllerTypes()) { container.Register (controllerType); } – sam
Работал и для меня –