Dans une application Web sur laquelle nous travaillons, nous souhaitons pouvoir afficher des informations sur les ressources d'un chemin donné. Le chemin est entièrement virtuel — il n'existe que dans l'application — donc nous n'avons pas vraiment de problème avec les utilisateurs qui définissent des chemins virtuels qui sont "bizarres" par les standards du système de fichiers.Utilisation de Url.RouteUrl pour rediriger vers URL aveC#,%, etc.
La question: nous avons une route qui lit quelque chose de similaire à
/Files/{*path}
et nous essayons de rediriger avec
Url.RouteUrl("File", new { path = somePath })
Cela fonctionne habituellement, mais échoue si somepath contient & ou #, entre autres. Dans ces cas, je suis nul. Je ne peux pas UrlEncode(somePath)
à ce stade, parce que RouteUrl fait son propre encodage d'URL, mais je ne peux pas les laisser tels quels, sinon ils ne sont pas traités correctement (l'octothorp n'est pas transmis aux données de routage, et le ampersand confond IIS). Y a-t-il une manière saine de contourner cela? Ou ai-je simplement besoin d'implémenter mes propres routes via une interpolation de chaîne?
J'ai l'intuition que vous avez suivi les instructions à http://dirk.net/2008/06/09/ampersand-the-request-url-in-iis7/ ou similaire à un moment donné dans le passé, si vous ' re sur IIS7, mais je ne peux pas trouver un correctif similaire pour IIS6. –