Question :
Je crée un logiciel wiki, essentiellement un clone de wikipedia/mediawiki, mais en ASP.NET MVC (le MVC est essentiel, donc ne me recommandez pas ScrewTurn).
Maintenant, j'ai une question :
J'utilise ce mapping de route, pour mapper une URL comme :
http://fr.wikipedia.org/wiki/ASP.NET
routes.MapRoute(
"Wiki", // Nom de la route
//"{controller}/{action}/{id}", // URL avec des paramètres
"wiki/{id}", // URL avec des paramètres
new { controller = "Wiki", action = "dbLookup", id = UrlParameter.Optional } // Valeurs par défaut des paramètres
);
Maintenant il m'est juste venu à l'esprit qu'il pourrait y avoir des titres comme 'AS/400' :
http://fr.wikipedia.org/wiki/AS/400
Accessoirement, il y en a aussi un (titre 'Slash') :
http://fr.wikipedia.org/wiki//
Et celui-ci :
http://fr.wikipedia.org/wiki//dev/null
En général, Wikipedia semble avoir une liste de titres intéressants comme celui-ci : http://fr.wikipedia.org/wiki/Wikipedia:Articles_with_slashes_in_title
Comment puis-je faire en sorte que les routes comme celle-ci soient correctement mappées ?
Modifier :
Quelque chose comme :
Si l'URL commence par /Wiki/, et si elle ne commence pas par /wiki/Edit/ (mais pas /Wiki/Edit) alors passer tout le reste de l'URL en tant qu'Id.
Modifier :
Hmm, juste un autre problème : Comment puis-je mapper celui-ci :
http://fr.wikipedia.org/wiki/C&A
Wikipedia peut...
Modifier :
Selon Wikipedia, en raison de conflits avec la syntaxe du wikitexte, seuls les caractères suivants ne peuvent jamais être utilisés dans les titres de page (ni pris en charge par DISPLAYTITLE) :
# < > [ ] | { }
Modifier :
Pour autoriser * et &, ajoutez
dans la section du fichier web.config
(Trouvé ici : http://www.christophercrooker.com/use-any-characters-you-want-in-your-urls-with-aspnet-4-and-iis)
0 votes
Pouvez-vous changer votre caractère de paramètre de routage en quelque chose de "plus habituel", comme un point d'interrogation ou une virgule... quelque chose qui n'est PAS valide dans un titre?
1 votes
ASP.NET MVC routage n'est pas votre seul problème. Essayez des sujets comme "LPT", "SQL*plus", "US$", "C#" etc. Beaucoup d'entre eux seront attrapés par IIS. Vous feriez mieux de penser à échapper à certains d'entre eux.