Question

Je suis coincé. J'utilisais la méthode décrite ici pour l'API Web WCF P6 Ninject travaillant avec l'aperçu de l'API Web WCF 5, cependant, les choses sont un peu différentes avec l'implémentation MVC dans la version bêta. Il y a un bon article ici http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver Cela parle de construire votre propre résolveur de dépendance personnalisé, mais je voudrais utiliser la même implémentation que j'utilise pour mes contrôleurs MVC View ... par exemple ninject. J'ai essayé quelques choses basées sur l'exemple de l'unité de l'IOC dans l'article, mais rien n'a encore disparu. Toute aide me pointer dans la bonne direction serait très appréciée. Je vais aussi continuer à creuser seul. Merci d'avance!

Voici où je suis. J'utilisais webactivator pour bootstrap le code, mais je l'ai depuis déposé sur l'application_start () juste pour éliminer une chose de plus de l'équation.

    protected void Application_Start()
    {
        var kernel = new StandardKernel(new MyNinjectModule());
        GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new NinjectDependencyResolver(kernel));
    }

Et je reçois l'erreur suivante:
Le type ninject.web.mvc.ninjectDependencyResolver ne semble pas implémenter Microsoft.practices.Servicelocation.Iservicelocator.
Nom du paramètre: communeServiceLocator

J'ai trouvé la solution
Il y a peut-être / y aura-t-il une manière plus élégante, mais cela fonctionne maintenant pour moi. J'ajoute également mon gestionnaire de messages personnalisé ici également.

[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart.ApiBootstrapper), "Start")]
namespace MyApp.AppStart
{
    public class ApiBootstrapper
    {
        public static void Start()
        {
            var kernel = new StandardKernel(new MyNinjectModule());
            var resolver = new NinjectDependencyResolver(kernel);
            GlobalConfiguration.Configuration.ServiceResolver.SetResolver(resolver.GetService, resolver.GetServices);
            GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiAuthHandler());
        }
    }
}

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top