Plusieurs Contrôleurs avec un Nom à ASP.NET MVC 2
Je reçois l'erreur suivante lors de l'exécution de mon ASP.NET application MVC:
La demande de "Compte", a constaté ce qui suit correspondance des contrôleurs:
uqs.Controllers.Admin.AccountController
MvcApplication1.Controllers.AccountController
J'ai cherché sur le projet de MvcApplication1.Controllers.AccountController
de l'enlever, mais je ne peux pas trouver une correspondance.
J'essaie à un régime enregistré d'un itinéraire pour résoudre le problème:
routes.MapRoute(
"LogAccount", //Route name
"{controller}/{action}/{id}", //URL with parameters
new { controller = "Account", action = "LogOn", id = "" },
new string[] { "uqs.Controllers.Admin" } //Parameter defaults
);
mais ce n'est pas le résoudre.
Plusieurs types de rencontre
le contrôleur nommé "Compte".
Comment je peux résoudre ce problème?
OriginalL'auteur loviji | 2010-04-13
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas avoir plus d'un contrôleur nommé
Account
dans votre application, même dans des espaces de noms différents.Vous avez ces contrôleurs de diviser par
Area
(une fonctionnalité ASP.NET MVC 2).Si vous effectuez une recherche pour
AccountController
vous trouverez tous les contrôleurs nommésAccount
dans votre application; et se déplacer dans différentsAreas
si vous voulez tous les deux, ou d'en supprimer un.OriginalL'auteur George Stocker
Si vous refactoriser votre projet et de modifier l'espace de Noms par défaut et Assemblée de "MVCApplication1" à "uqs", vous pouvez vous retrouver avec 2 assemblées dans votre répertoire bin (le nouveau et l'ancien). Vous pouvez obtenir cette erreur, parce que le AccountController est dans les deux assemblées.
Nettoyer votre répertoire bin de l'ancien MVCApplication1.dll.
C'est la bonne réponse devrait être acceptée comme telle.
J'ai renommé mon projet et avait l'ancien fichier dll encore dans mon dossier bin -- cela a réglé mon problème. Merci!
Vous sir sont un Champion, je vous remercie de bien vouloir! ASP.NET MVC semble être relativement froid quand il s'agit de refactoring des espaces de noms, c'est encore un autre piège "propre" n'a même pas à résoudre!
OriginalL'auteur Craig Celeste
Eu ce même problème. Nettoyer le bac et j'étais bon pour aller.
OriginalL'auteur Jason H
Un peu déroutant variation sur le problème (semblables dans la mesure où il provoque le même message d'erreur) peut se produire même avec les espaces de noms fournie. MVC 3, je pense, est un peu plus pointilleux que le MVC 2 sur ce front.
Réponse Courte:
Assurez-vous que l'espace de noms de votre contrôleur est en fait l'espace de noms spécifié dans le
MapRoute
appel!!Réponse Longue:
J'ai 3 zones :
default ("")
/Facebook
/Store
et ils ont chacunAdminController
J'ai l'itinéraire tracé comme ceci (pour ma zone par défaut):
Une demande d' /admin a donné le message d'erreur suivant :
Mais attendez une minute! N'ai-je pas spécifier le contrôleur de l'espace de noms.... ? Ce qui se passe.... ?
Eh bien, il s'est avéré que mon défaut de la zone admin contrôleur de l'espace de noms a été
RR_MVC.Controller
au lieu deRolling_Razor_MVC.Controller.Main
.Pour quelque raison dans MVC 2, cela ne lui donne pas un problème, mais dans MVC 3 il ne. Je pense que MVC 3 nécessite simplement d'être plus explicite quand il y a des ambiguïtés potentielles.
OriginalL'auteur Simon_Weaver
AccountController
est généré automatiquement par le ASP.NET MVC modèle Visual Studio. Il est situé dansControllers\AccountController.cs
. Essayez de rechercher dans le projet et de le supprimer.OriginalL'auteur Darin Dimitrov
J'ai eu ce problème...
Résolu par la suppression d'un projet de référence dans un de la .csproj fichiers
OriginalL'auteur Louis Sayers