Introduction
Après avoir créer mon URL rewriter, j'obtenais l'erreur suivant : Cannot use a leading .. to exit above the top directory. J'ai cherché sur le web sans trop de solutions, mais j'ai lu un article, je ne me rapelle pas trop où, qui parlait du ~. Voilà ma piste...
Mes conclusions
Bon en résumé, le ~ dans les URL runat server calcul le root virtuel du site web, exemple :
- http://www.monsite.com/toto/default.aspx --> ~/toto/default.aspx
- Si subsite est un sous-site : http://www.monsite.com/subsite/default.aspx --> ~/default.aspx
Ce que j'ai déduit c'est que ASP.NET calcule le root avec des ../ puisque par défaut, un server Windows 2003 à l'option "Absolute Path"(désolé mais je ne me rapelle pas exactement c'est quoi le nom) à off. Donc avec mon remapping, l'URL "/post.aspx" devient "/post/[titre du post]/[id du post]/default.aspx", donc ASP.NET devait remapper mes "~/" par "../../../" se qui faisait sortir du root du site.
Puique je peux utilisé cette option j'ai règlé mon problème assez vite. Pour appeler le root du site, je n'ai qu'à commencer mon lien par un /.
J'ai donc remplacé tous les élément runat server, rentourné au client, qui commencaient par ~/ par /.
Quand je dit renvoyé au client c'est les éléments image, hyperlink, etc. Car les élément serveur, DataSource, etc, s'exécute correctement.
Conclusion
Si vous avez ce problème, remplacer les "~/" de vos controls serveur(retourné au client) par des "/" et le tour sera joué... Il vous faudra bien sur permettre l'utilisation du "/" (désignant le root) dans IIS.