2010-10-28 5 views
0

Je rencontre un problème dans mon application Web ASP.NET où des barres obliques inverses intentionnellement sont supprimées de l'URL de la requête.asp.net consécutives sont les barres obliques inversées supprimées de l'URL

Je demande quelque chose comme: localhost/Page/A // C

Mais lorsque la demande touche la page, l'URL première est: localhost/Page/A/C

Non que si tel est le coupable, mais j'ai une URL Rewite regex en place, voici la règle:

<system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Games QueryString"> 
        <match url="^(Page|OtherPage).aspx(?:/([\w-_()]+)(?:/([\w-_() ]*)(?:/([\w-_()]+))?)?)?$" /> 
        <action type="Rewrite" url="{R:1}.aspx?1={R:2}&amp;2={R:3}&amp;3={R:4}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 

Ainsi, après la réécriture, la querystring sort comme Page.aspx 1 = a & 2 = C & 3 = Quand il devrait être Page.aspx? 1 = A & 2 = & 3 = C

Aide s'il vous plaît !!

+0

Pourquoi avez-vous besoin de barres obliques consécutives dans une URL? – pavanred

+0

Chaque groupe après la page est une partie distincte d'une chaîne de requête en trois parties; Page/1/2/3. Si l'utilisateur a sélectionné les parties 1 et 3, alors 2 devrait être retourné vide, d'où Page.aspx/a // c – JoshKraker

Répondre

0

Vous pourriez probablement changer votre regex à quelque chose comme ceci:

^(Page|OtherPage).aspx(?:/+([\w-_()]+)(?:/+([\w-_() ]*)(?:/+([\w-_()]+))?)?)?$ 

J'ai ajouté un « + » après vos matchs à «/», ce qui les change d'accepter un «/» à accepter un ou plus.

En outre, je ne peux pas m'entraîner pour la vie de mon pourquoi vous voudriez avoir des barres obliques supplémentaires là. Probablement une mauvaise idée. Reconsider le faire pour n'importe quelle raison.

+0

Cela produirait le même résultat que je reçois maintenant. Son wierd, mon regex devrait fonctionner, si vous l'exécutez dans le test de regex, vous verrez que Page.aspx/a // c correspondra à où {R: 1} = 'Page', {R: 2} = 'a', {R: 3} = '' et {R: 4} = '' c. Une fois réécrite, elle devrait produire Page.aspx? 1 = A & 2 = & 3 = C – JoshKraker

Questions connexes