J'ai une application ASP.NET MVC avec une route qui permet de rechercher des choses via /search/<searchterm>.
Lorsque je fournis "search/abc", cela fonctionne bien, mais lorsque je fournis "/search/a+b+c" (correctement codé en url), IIS7 rejette la requête avec l'erreur HTTP 404.11 ( Le module de filtrage des demandes est configuré pour refuser une demande qui contient une double séquence d'échappement. ). Tout d'abord, pourquoi fait-il cela ? L'erreur ne semble se produire que si le mot fait partie de l'URL, mais pas d'une chaîne de requête (/transmit?q=a+b+c fonctionne bien).
Je pourrais activer les requêtes à double échappement dans la section sécurité de mon web.config mais j'hésite à le faire car je ne comprends pas les implications, ni pourquoi le serveur rejetterait la requête "a+b+c" comme partie de l'URL mais l'accepterait comme partie d'une chaîne de requête.
Quelqu'un peut-il m'expliquer et me conseiller sur la marche à suivre ?
7 votes
J'ai également essayé l'option peut-être plus correcte d'appeler Server.Url. Chemin d'accès Encode et se retrouve avec
/search/a%2520b%2520c
dans le balisage qui a conduit à une belle erreur "Une valeur potentiellement dangereuse de Request.Path a été détectée à partir du client (%)". Il semble que l'on ne puisse pas gagner.