Pour toute URL avec un signe plus (+) dans l'URL de base (pas la chaîne de requête), IIS7 et IIS7.5 (Windows Server 2008 et 2008 R2) ne semblent pas transmettre l'URL au gestionnaire par défaut d'une application ASP.NET. . J'ai commencé à remarquer le problème avec un gestionnaire HTTP personnalisé, *.html
mais j'ai le même problème avec *.aspx
. IIS6 (Server 2003) n'a aucun problème avec ces mêmes URL.
Pour répliquer le problème, dans un site ASP.NET, j'ai créé un ensemble de fichiers ASPX faisant un simple Response.Write avec différents noms:
- test_something.aspx
- test_some + thing.aspx
- test_quelque chose.aspx
Le troisième fichier testait si IIS7 [.5] traitait les symboles plus comme des espaces (comme dans la chaîne de requête); cela ne semble pas être le cas. Avec tous ces fichiers en place, frapper http://somehost/test_some+thing.aspx
ou http://somehost/test_some%2bthing.aspx
fonctionner correctement dans IIS6 mais 404 dans IIS7 / IIS7.5 avant d’arriver à un gestionnaire ASP.NET. Y-a-t-il une configuration dans IIS7 / 7.5 qui me manque pour la "voir" un signe plus dans l'URL sans manquer l'extension finale utilisée pour déterminer un gestionnaire HTTP?
\+
- être ?Réponses:
Après avoir recherché plus de combinaisons d'IIS et de plus, il apparaît que IIS7 [.5] est configuré pour rejeter les URL avec le signe plus par défaut, par crainte de l'utilisation de ce caractère. ce symbole est toujours autorisé dans la chaîne de requête, cependant. La solution consiste à modifier la valeur par défaut de l'attribut requestFiltering
<system><webServer><security><requestFiltering>
pour autoriser les caractères doublement codés avec un appel de ligne de commande (modifiant en définitive votre web.config ASP.NET):Cela peut paraître un peu plus dangereux que ce que l’on préfère avec son site Web, mais il ne semblait pas y avoir de moyen d’être plus précis que ce que permet une couverture. Les avertissements concernaient l'inadéquation possible entre l'utilisation d'un plus dans une URL et sa traduction classique sous forme d'espace. Il semble que la seule autre alternative consiste à cesser d'utiliser des caractères plus dans vos URL.
la source
Je viens de comprendre comment créer une règle de réécriture pour convaincre IIS7 de mapper les avantages des espaces dans les URL. Dans mon cas, il s’agissait de conserver les anciens marque-pages ou hyperliens.
Voir mon article de blog pour plus de détails et de références.
la source