12
votes

Pourquoi mon château Windsor Controller's GetControllerInstance () est-il appelé avec une valeur null?

J'utilise le château Windsor pour gérer les instances de contrôleur (entre autres choses). Mon usine de contrôleur ressemble à ceci:

protected override IController GetControllerInstance(Type controllerType)
{
    if (controllerType == null)
        return null;

    return (IController)_container.Resolve(controllerType);
}


2 commentaires

Pourquoi piraterez-vous l'enregistrement avec réflexion au lieu d'utiliser une API d'enregistrement appropriée?


@Krzysztof - Je suivais l'exemple de Steve Sanderson. Si vous souhaitez poster un meilleur moyen d'enregistrer toutes les classes qui héritent d'un contrôleur, veuillez le faire.


4 Réponses :


26
votes

Il s'avère que la deuxième requête était le cadre MVC essayant de trouver un script que j'ai inclus dans le site.master. Le chemin n'existait pas, alors je suppose que cela a essayé de résoudre un contrôleur (correspondant /scripts/sitescripts.js). J'ai changé la méthode à ceci: xxx

et une exception avec un message compréhensible a été lancé.


4 commentaires

Merci, j'ai passé des heures à chercher cette solution.


Et moi trois. Juste pour noter, pour MVC 2.0, c'est cette base de retour.geControllerInstance (demandeContext, contrôleur);


Moi quatre. J'ai pu le perdre sur celui-ci ... content d'avoir trouvé cela.


@Jedi, pour ce problème spécifique, je viens de supprimer la référence au script. Si vous obtenez l'erreur d'une image ou de quelque chose, vous pouvez regarder dans Ignorer les itinéraires



4
votes

Avait ce problème lors de la suite du Pro ASP.NET MVC Cadre livre, ajouté

routtes.ignoreroute ("favicon.ico");

aux itinéraires du fichier global.asax.cs et cela fonctionne. En voir plus Vous allez voir ici: Servir Favicon .


1 commentaires

Avait le même problème que le gars posant la question et tout en améliorant la manutention des erreurs, c'est une bonne idée que la page réelle était que la page chargait et puisse ensuite chercher le Favicon. Ajout de la ligne ci-dessus résolue mon problème immédiatement.



3
votes

En ce qui concerne l'enregistrement de tous les contrôleurs, vous le faites habituellement comme ceci: xxx

voir La documentation Pour plus d'explication de l'API.


0 commentaires

0
votes

Addition très tardive: le didacticiel étape par étape sur le site Windsor semble bon. Il décompose la création d'un contrôleur et de la manière dont elle est chargée dans l'usine. Il couvre également le bruit "Favicon.ico".

http: / /docs.castleproject.org/(s(0jvahybwt45sgwzwirpa3455)/windsor.windsor-Tutorial-par-one-geting-windsor.ashx


0 commentaires