StructureMap erreur lors de l'invalide le contrôleur de
Je suis en utilisant la Structure de la carte comme le MVC vitrine par Rob Conery fait et j'ai un AdminController et donc pour le trouver, je viens de type:
website/Admin/action
cependant si j'ai manquer épeler le nom du contrôleur, je reçois le message d'erreur ci-dessous:
Détails De L'Exception: System.ArgumentNullException: la Valeur ne peut pas être null.
Nom du paramètre: la clé
Il y a erreur sur cette ligne:
Controller controller = ObjectFactory.GetInstance(controllerType) as Controller;
Quelqu'un a une idée sur comment je peux gérer cette erreur ou de ne pas laisser se produire du tout et peut-être juste goto une page 404??
Acclamations à l'avance
OriginalL'auteur Schotime | 2008-11-03
Vous devez vous connecter pour publier un commentaire.
Le problème est que si il n'y a pas de contrôleur avec le nom du type (par exemple, si l'utilisateur tape "Amdin" la ControllerFactory de la classe de base va chercher "AmdinContrôleur" et de ne pas le trouver, mais sera toujours appeler votre surchargée de la méthode). Dans ce cas, le controllerType variable sera null. De sorte que vous pouvez vérifier la valeur null avant la ligne que vous avez cité et ensuite (si elle est nulle), soit:
A) mettre en Œuvre une correction d'orthographe comme celle cfeduke suggère
ou B), il suffit de jeter un HttpException avec le code d'état 404 (qui devrait cause de l'erreur 404 que vous cherchez).
REMARQUE: Si vous faites une correction d'orthographe, vous devriez faire une Réponse.Redirection vers la nouvelle URL, plutôt que de simplement en silence le chargement du droit de contrôleur, de cette façon la barre d'adresse change pour refléter la correction de l'orthographe
OriginalL'auteur Andrew Stanton-Nurse
Vous avez un couple de différentes options (ou si vous le souhaitez, deux choses que vous pouvez combiner pour une solution). Pour supprimer certains des problèmes potentiels entre le président et la barre d'adresse, vous pouvez mettre en œuvre une solution SoundEx en C# en utilisant le nouveau framework de routage pour éventuellement capturer quelques fautes d'orthographe et de re-router vers l'URL attendu (et/ou ajouter des itinéraires pour ce que vous croyez commun des fautes d'orthographe ou les demandes seront). Ceci, cependant, n'est pas une solution qui permettra de résoudre entièrement le problème de sorte que vous aurez besoin de regardez dans la mise en œuvre de pages d'erreur personnalisées pour votre application.
OriginalL'auteur cfeduke