2010-05-19 4 views
11

Je travaille sur un projet ASP.NET MVC2. Le problème est quand une chaîne qui serait réécrite en URL contient un caractère spécial tel que barre oblique inverse ou point d'interrogation, l'URL sera erronée, même si je l'ai déjà encodée.La barre oblique inverse peut-elle être encodée correctement dans l'URL avec réécriture d'URL?

Par exemple:

  1. J'ai un identifiant de produit "P001 \ 2-2".
  2. J'encodées dans "P001% 5C2-2"
  3. L'URL http://domain.com/Product/p001%5C2-2 répond Erreur HTTP 400 - Bad Request.

Comment puis-je me le procurer? Essayez d'utiliser Html.Encode pour résoudre votre barre oblique inverse.

+0

J'ai supprimé ma réponse? pour l'instant, donc la question pourrait venir dans la section sans réponse, alors certaines personnes asp.net peuvent jeter un coup d'oeil. Je suppose que je comprends l'encodage de l'URL, mais pas celui d'asp.net-mvc. – YOU

Répondre

5

Si la barre oblique inverse est le seul caractère "spécial" dans votre identifiant, vous pouvez utiliser Replace ("% 5C", "\").

Avez-vous vérifié votre routingMap? il doit y avoir une route comme

Produit/{} prodictID

0

J'ai eu un problème similaire avec 2F% dans mes URL. Essayez d'ajouter l'indicateur nOrmalize à votre rewriteRule.

Exemple avec Normaliser drapeau "O" en gras:

RewriteRule^(. *) Index.html http://www.yoursite.com/ $ $ 1 [R = 301, L, O ]

Questions connexes