Je reçois une erreur «N’implémente pas IController» sur les images et robots.txt dans MVC2

Je reçois une erreur étrange sur mon serveur Web pour apparemment tous les fichiers sauf les fichiers .aspx.

Voici un exemple. Remplacez simplement ‘/robots.txt’ par n’importe quel nom de fichier .jpg ou .gif ou autre et vous aurez l’idée:

Le contrôleur pour le chemin ‘/robots.txt’ n’a pas été trouvé ou n’implémente pas IController.

Je suis sûr que cela a quelque chose à voir avec la façon dont j’ai configuré le routage, mais je ne suis pas sûr de ce que je dois faire exactement à ce sujet.

En outre, il s’agit d’un site mixte MVC et WebForms, si cela fait la différence.

    Vous pouvez ignorer le fichier robots.txt et toutes les pages aspx de votre routage.

     routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"}); routes.IgnoreRoute("{*robotstxt}", new {robotstxt=@"(.*/)?robots.txt(/.*)?"}); 

    Vous pouvez aussi ignorer le favicon.

     routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"}); 

    Vous pouvez ajuster l’expression régulière pour exclure les chemins.

    Piraté de la source .

    La voie ignorée donnée ci-dessus ne fonctionnait pas pour moi, mais j’ai trouvé une autre similaire:

     routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" }); 

    Cette erreur peut également se produire si, dans une vue de votre région, vous utilisez l’aide Html.Action. Cet assistant utilisera toujours la zone comme préfixe, à moins que vous ne le disiez spécifiquement. Par exemple,

     @Html.Action("Main", "Navigation", new { area = ssortingng.Empty }) 

    J’ai trouvé une autre solution aussi … Bien que je ne pense pas que je vais l’utiliser, cela vaut la peine de le montrer dans les réponses:

    Les éléments suivants devraient (en théorie) ignorer la recherche de contrôleurs pour quelque chose avec un ‘.’ dedans.

     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" }, // Parameter defaults new { controller = @"[^\.]*" } // Parameter contraints. ); 

    Avez-vous encore:

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    … dans votre Global.asax.cs?

    MVC le met par défaut, et il est censé le gérer.

    Si vous le faites, le problème est peut-être de savoir comment vous mélangez MVC et WebForms.

    J’ai rencontré cette erreur lorsque je demande des ressources qui n’existaient pas.

    Plus précisément, je demandais un fichier css IE personnalisé:

    (Ce sont des commentaires de condition , interprétés par IE)

    Cependant, la ressource réelle existait sur ~ / Content / ie / ie7.css.

    Donc, sans aucune modification du routage, l’erreur a été résolue en utilisant l’URL correcte de la ressource.