Je viens d'installer la mvc4 rc de mise à jour et je suis en train de construire une application de l'api avec un peu de chance.
Je suis à l'aide de ninject, mais ne peux pas obtenir mon contrôleurs de charge. Je reçois un message d'erreur
Type 'Api.Les contrôleurs.ConsumerController " n'a pas de constructeur par défaut
Je suis très nouveau à la mvc et à l'aide d'injection de sorte s'il vous plaît garder avec moi.
Je n'ai pas fait quelque chose de spécial pour la liaison par défaut qui est créé via nuget
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IConsumerRepository>().To<ConsumerRepository>();
}
}
Mon contrôleur ressemble
private readonly IConsumerRepository _repository;
public ConsumerController(IConsumerRepository repository)
{
_repository = repository;
}
[HttpGet]
public IQueryable<Consumer> Get(Guid id)
{
return _repository.Get(id).AsQueryable();
}
Que dois-je faire pour obtenir les contrôleurs d'api pour travailler avec ninject?
Désolé si c'est des choses simples
J'ai essayé ta suggestion Michael toutefois, après le changement de la webcommon.cs à ce
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IConsumerRepository>().To<ConsumerRepository>();
}
J'obtiens une erreur lors de l'
var kernel = new StandardKernel();
est appelé
La méthode 'GetFilters' en type 'Ninject.Web.WebApi.Le filtre.DefaultFilterProvider " à partir de l'assembly 'Ninject.Web.WebApi, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7' n'a pas de mise en œuvre.
Ce qui me manque?