10
votes

ASP.NET MVC 2 Aperçu 1 - Problème Compilation du contrôleur Structuremap usine

J'ai un projet pour lequel j'utilise StructureMap pour une injection de dépendance. Le projet compile une amende en tant que projet MVC, mais après tout déplacer sur un projet MVC2, je reçois maintenant l'erreur suivante:

Test.Web.Controls.StructureMapControllerFactory.getControllerInstance (System.tPe) ': Aucune méthode appropriée trouvée à Remplacement C: \ Test \ Web \ Controlers \ StructureMapControllerFactory.cs 11 40 Test.Web

voici mon structureMapControllerFactory: xxx

J'ai trouvé un post semi-lié à ce problème, mais cela n'a proposé aucun aperçu de la façon de résoudre Mon problème: MVC 2 Aperçu 1 - Les méthodes avec les paramètres du contrôleur ne parviennent pas à charger

évidemment, je dois manquer une modification de la progression 1.0-2.0, mais je ne suis pas sûr de ce qui a changé. Toute aide est toujours appréciée.


0 commentaires

3 Réponses :


19
votes

La signature de cette méthode a changé. Il y a maintenant un premier argument de requestContext: xxx

Vous devez également modifier votre appel en base.getControllerInstance: xxx


2 commentaires

Merci beaucoup craig. Je me demande pourquoi cela ne se reflète pas dans le navigateur d'objet VS lors de l'exploration de l'espace de noms System.Web.MVC [2.0.0.0].


Pas sûr, mais vous pouvez taper OV [Spacebar] dans l'éditeur de code (c'est-à-dire commencer à taper "remplacement" lorsque vous déclarez normalement une nouvelle méthode) pour obtenir la liste des méthodes surcharges pour la classe actuelle avec leurs signatures.



1
votes

Je l'ai traqué avec le réflecteur et la signature de fonction est modifiée. le

Icône virtuel interne protégé GetControllerInstance (DemandeContext DemandeContext, Type ContratType)

La DLL MVC 2 réside ici: C: \ Fichiers de programme \ Microsoft asp.net \ asp.net mvc 2 \ assemblages \ system.web.mvc.dll

Merci, cela a résolu mon problème!


0 commentaires

8
votes

Craig Stuntz est très correct ici.

Assurez-vous simplement de ne pas oublier de référencer System.Web.Routez-vous en plus si votre DI est dans un projet différent de votre application MVC.

Pour une raison quelconque, il n'y avait aucune erreur montrant dans l'IDE pour moi, mais sur la compilation, je voudrais toujours obtenir un getControllerInstance "Aucune méthode appropriée trouvée à remplacer."

Une fois que j'ai corrigé l'assemblage référencé manquant de System.Web.Routing, tout allait bien ...


2 commentaires

Merci!. Je ne sais pas encore pourquoi, mais ajoute une référence à System.Web.Routting résolu cela pour moi!


Merci pour le System.Web.Routez le commentaire - m'a sauvegardé le débogage de temps.