Ninject MVC3 - programme d'amorçage lancer “Déjà Initialisé” exception
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 dans NinjectMVC3.cs:
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!
Modifier à l'adresse de réponse de Remo
C'est à partir de mon global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
Le mondial.asax est 100% standard aswell. Aucun ajustement à faire.
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 🙂
- pas tout à fait sûr de quoi faire avec cette question, car il n'y a probablement pas de bonne réponse.. Dois-je le signaler, de le fermer ou de quelque chose?
- Vous pouvez soit sélectionner la réponse qui m'a le plus aidée, ou de répondre à vous-même avec les détails au sujet de ce que vous avez fait (pour l'essentiel, votre modifier). Paraît bizarre, mais c'est la façon dont c'est normalement pris en charge.
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à La configuration d'un MVC3-application
En bref:
Vous avez probablement een
App_Start
dossier de votre projet avec unNinjectMVC3.cs
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 retirer le
App_Start
dossier et supprimer les références à WebActivator et Microsoft.Web.L'InfrastructureCette 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.
de supprimer la dll résolu le problème.
Plus vous êtes susceptible de dériver de NinjectHttpApplication et à l'aide de AppStart en même temps. Ces deux voies ne doit pas être mélangé.
Lire la documentation https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application
J'ai récemment rencontré le même problème. Dans mon cas, j'ai plusieurs projets dans ma solution... et plus que l'un de ces projets contient de package NuGet références à Ninject.MVC3.
Lorsque j'ai mis à jour tous mes Ninject les versions de package, App_Start dossiers ont été créées sur tous les projets qui ont NuGet références. Donc, j'ai dû aller et supprimer les App_Start des dossiers à partir de la classe de projets de bibliothèque; en laissant les App_Start dossier sur la principale application MVC.
Je ne suis pas sûr de ce qui était à l'origine de votre demande à la bombe, mais je suis heureux de le faire VS redémarre résolu. J'ai eu la même erreur se produise, mais a été incapable de corriger n'importe comment beaucoup de nettoyage/reconstruit j'ai fait ou combien de fois j'ai redémarré VS.
Ce qui a fini par travailler pour moi était de m'enlever le Ninject MVC Package NuGet complètement et il suffit d'ajouter le Ninject et Ninject dll à l'ancienne. Je pense qu'il y a peut être quelque chose de mal avec leur package NuGet.
J'espère que cela aide quelqu'un d'autre, j'ai perdu quelques heures quand j'avais besoin de vider le Package NuGet.
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:
lire les docs!
https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application
Quelle est la différence entre ces approches?
Les deux approches exactement le même. Ils crochet Ninject dans les applications MVC. La seule différence est qu'ils utilisent une autre approche pour ce faire. La raison pour l'utilisation de différents approchaches est que le package NuGet peut fournir de la zone d'intégration par l'ajout d'un fichier. Sinon, il aurait besoin compliqué modifications de la mondiale.asax
REMARQUE: Si vous décidez d'aller avec la première approche, si vous utilisez le package NuGet (pour lequel il n'y a pas de raison), vous devez supprimer le App_Start dossier et supprimer les références à WebActivator et Microsoft.Web.L'Infrastructure.
J'ai eu le même problème lorsque j'ai mis à jour le Ninject.Web.MVC3 package de la version 2.2.2.0. J'ai remarqué que cette mise à jour a ajouté la ligne suivante à mon .csproj fichier VCS (FTW!):
Évolution de l'action de Construire à partir de la Compilation du Contenu de ce fichier a résolu mon problème. App_Start est aussi mauvais que App_Code, après tout...
J'ai résolu ce problème en supprimant manuellement certains fichiers dll dans le dossier /bin, qui n'a pas été supprimé lors de l'exécution de la commande de Nettoyage à partir de Visual studio.
J'ai eu le même problème avec quelques légères différences, j'ai été héritant de NinjectHttpApplication et dominante OnApplicationStarted.
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.
Je n'ai rien à faire après, j'ai ajouté les références.
j'ai passé environ 4 heures de déconner avec les packages nuget, en vain.
finalement je suis allé à gitub et cloné un nouveau repo, téléchargé la dernière Ninject.Web.Commun et les dernières Ninject2 release et a une libération locale de construction.
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é à travailler et les contrôleurs ont été créés avec leurs dépendances résolues.
c'est ce que mon code ressemble, mais je pense qu'il peut aussi être un problème dans les packages nuget...
assurez-vous que seule l'assemblée ont la "NinjectMVC3" de la classe ,si a.dll,b.dll tous ont le NinjectMVC3 classe puis bin ,Il y aura une telle erreur!
J'ai juste eu le même problème et j'ai réalisé que c'était parce que NuGet ajouté NinjectMVC3.cs fichiers à la fois mon application web et mon DAL bibliothèque. Je ne savais pas que s'était produit, mais une fois que j'ai supprimé le fichier à partir de la DAL de la bibliothèque, il était beau.
Lorsque vous utilisez nuGet il y a un dossier App_start en cours de création, jeter un oeil sur elle.
Je vais ajouter cela comme une réponse seulement parce que j'ai pas vu personne mentionner encore et il vaut la peine de vérifier avant de partir et le clonage de repos et autres joyeusetés.
J'ai rencontré ce problème à l'improviste sur une solution qui contient peut-être que 15 projets, dont trois sont des sites web. J'avais travaillé sur l'un des sites lorsque j'ai commencé à avoir ce problème sans m'avoir changé quoi que ce soit qui serait évidemment la cause de ce problème: je n'avais pas ajouté Ninject n'importe où (il était déjà installé et fonctionne très bien), le global asax fichiers n'ont pas été découlant de la Ninject classes et on n'a rien d'anormal dans tout App_Start dossier.
Après un peu de vous embêter avec NuGet et l'aime en vain (provoquée par des messages sur les références non résolues - semblait Ninject n'était pas référencé correctement, mais qu'il était), je suis passé par tous les fichiers que j'avais changé accordant une attention particulière à projet et des fichiers de configuration, et a découvert que, en quelque sorte, Visual Studio a ajouté l'un des autres sites web comme une référence de projet à celui que j'étais en train de courir. En conséquence, le Ninject config a été exécuté deux fois, et à l'origine du problème, de sorte que la cause était la même, mais la méthode de vis était différent.
Il n'y a pas de raison pour que le projet de référence, il n'était pas là avant qu'elle n'était pas valide dépendance, je n'ai pas l'ajouter manuellement et je n'ai toujours aucune idée de comment c'est arrivé, mais de le retirer immédiatement résolu le problème.