35 votes

Ninject MVC3 - Amorçage générant une exception "Déjà initialisé"

J'ai créé un vide Asp.Net MVC3 projet, et utilisé nuget install-package Ninject.MVC3

Sans rien faire d'autre (pas de services enregistré et n'est pas même un contrôleur créé) je lance l'application.

Le Projet des sauts à la ligne 22, dans NinjectMVC3.cs avec l'exception suivante:

[InvalidOperationException: Déjà Initialisé!] Ninject.Web.Mvc.Programme d'amorçage.Initialiser(Func`1 createKernelCallback) dans c:\Projects\Ninject\Maintenance2.2\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\Bootstrapper.cs> :58 Mvc.App_Start.NinjectMVC3.Start() dans c:\Projects\Events\Events\App_Start\NinjectMVC3.cs:22

[TargetInvocationException: Exception a été levée par la cible d'une invocation.]
Système.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo de la méthode, de l'Objet cible, Object[] arguments, SignatureStruct& sig, Les attributs MethodAttributes méthode, RuntimeType typeOwner) +0
Système.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo de la méthode, de l'Objet cible, Object[] arguments, Signature sig, Les attributs MethodAttributes méthode, RuntimeType typeOwner) +72
Système.De la réflexion.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] paramètres, CultureInfo culture, Boolean skipVisibilityChecks) +335
Système.De la réflexion.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] paramètres, CultureInfo culture) +28
Système.De la réflexion.MethodBase.Invoke(Object obj, Object[] paramètres) +19
WebActivator.BaseActivationMethodAttribute.InvokeMethod() +199 WebActivator.ActivationManager.RunActivationMethods() +330 WebActivator.ActivationManager.RunPreStartMethods() +27 WebActivator.ActivationManager.Run() +39

La ligne en NinjectMVC3.cs est:

public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
            DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
            bootstrapper.Initialize(CreateKernel); // <- this one right here...
        }

Ce qui se passe avec ça? J'ai utilisé Ninject pour MVC3 dans d'autres projets sans problèmes à tous. Je remarque que la deuxième ligne dans la méthode Start() n'est pas inclus dans les vieux (semaines) paquets de Ninject.MVC3, alors peut-être que quelque chose a été brisé lors d'une récente mise à jour aussi?

S'il vous plaît aider!

Edit pour l'adresse de réponse de Remo

C'est à partir de mon global.asax.cs

 public class MvcApplication : System.Web.HttpApplication
 {

Le global.asax est 100% standard aswell. Aucun ajustement n'est fait.

EDIT - Problème a disparu...

Honnêtement, je n'ai aucune idée de ce qui a causé cela, mais après quelques redémarrages de Visual Studio, et un redémarrage, le projet est de travailler comme il se doit. Ne peux reproduire le problème dans de nouveaux projets.

Désolé pour perdre votre temps :)

33voto

Andrew Flierman Points 3516

Jetez un oeil à la Configuration d'un MVC3-application

En bref:

Vous avez probablement een App_Start le dossier de votre projet avec un NinjectMVC3.cs le fichier.

Lorsque vous utilisez le package NuGet en combinaison avec la modification du Mondial.asax (pour lequel il n'y a pas de raison), vous devez supprimer l' App_Start le dossier et supprimer les références à WebActivator et Microsoft.Web.L'Infrastructure

16voto

Baldy Points 2115

Cette situation est venu pour moi quand j'ai changé les espaces de noms de mon projet, puis marche de nouveau.

même quand j'ai nettoyé la solution et a fait un iisreset, il revint avec déjà initialisé'.

le problème se pose à partir du dll qui avait été créé dans le répertoire bin quand j'ai changé les noms et construit le projet - après avoir changé les espaces de noms en arrière et la solution de nettoyage la dll à partir de l'alternative de l'espace de noms étaient encore là, et ont donc été chargés lorsque l'application web a commencé, en faisant le "déjà initialisé' erreur.

la suppression de la dll résolu le problème.

12voto

Remo Gloor Points 26195

Vous dérivez probablement de NinjectHttpApplication et utilisez AppStart en même temps. Ces deux moyens ne doivent pas être mélangés.

Lire la documentation https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application

4voto

Trevor Germain Points 41

J'ai récemment rencontré le même problème. Dans mon cas, j'ai plusieurs projets dans ma solution ... et plus qu'un de ces projets contient des références de paquet NuGet à Ninject.MVC3.

Lorsque j'ai mis à jour toutes les versions de mon package Ninject, des dossiers App_Start ont été créés sur tous les projets contenant des références NuGet. Je devais donc supprimer les dossiers App_Start des projets de bibliothèque de classes. en quittant simplement le dossier App_Start sur l'application MVC principale.

3voto

Yngve B. Nilsen Points 5785

Problème a disparu...

Honnêtement, je n'ai aucune idée de ce qui a causé cela, mais après quelques redémarrages de Visual Studio, et un redémarrage, le projet est de travailler comme il se doit. Ne peux reproduire le problème dans de nouveaux projets.

Désolé pour perdre votre temps :)

Mise à JOUR

Puisque l'envoi de cette réponse un peu de bonnes réponses est apparu. Je suis à jour de cette réponse pour recueillir les différentes approches en une seule réponse. J'espère que c'est ok pour vous les gars:

DevilDog74 répondu

enfin, je suis allé à gitub et cloné un nouveau repo, téléchargé la dernière Ninject.Web.Commun et les dernières Ninject2 les versions release et a une libération locale construire. puis j'ai laissé tomber les packages nuget et fait des références d'assembly pour le nouvellement compilé > assemblées "Ninject", "Ninject.Web.Commun" et "Ninject.Web.Mvc" et mon projet a commencé > travail et les contrôleurs ont été créés avec leurs dépendances résolues.

Jeff Circeo répondu

J'ai résolu le problème en téléchargeant à partir de https://github.com/ninject/ninject.web.mvc au lieu d'utiliser le package nuget. J' ne pas avoir à faire quoi que ce soit après je ajout de la référence.

Marcus Roi répondu

Ce qui a fini par travailler pour moi a été de supprimer la Ninject MVC Package NuGet complètement et il suffit d'ajouter le Ninject et Ninject dll à l'ancienne façon. Je pense qu'il y a peut-être quelque chose de mal avec leur package NuGet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X