2010-10-28 86 views
0

我在ASP.NET Web应用程序中出现了故意连续反斜杠被从请求URL中删除的问题。asp.net连续从url中删除反斜杠

我会要求是这样的: 本地主机/页/ A // C

但是,当请求到达的页面,原始网址是: 本地主机/页/ A/C

不知道这是罪魁祸首,但我有一个适当的网址Rewite正则表达式,这里的规则:

<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> 

所以,重写后,查询字符串是走出来的Page.aspx 1 = A & 2 = C & 3 = 当它应该是Page.aspx?1 = A & 2 = & 3 = C

请帮助!

+0

为什么你需要在网址中连续的斜线? – pavanred 2010-10-28 02:46:16

+0

页面之后的每个组都是三部分查询字符串的单独部分;页/ 1/2/3。如果用户选择了第1部分和第3部分,则2应该返回空,因此Page.aspx/a // c – JoshKraker 2010-10-29 00:38:03

回答

0

你也许可以改变你的正则表达式是这样的:

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

我添加了一个“+”你的比赛后,“/”,从接受一个“/”来接受一个改变他们或者更多。

此外,我不能为我的生活工作,为什么你想在那里有额外的斜杠。可能是一个糟糕的主意。由于任何原因重新考虑这样做。

+0

这会产生与现在相同的结果。它的奇怪,我的正则表达式应该工作,如果你在正则表达式测试中运行它,你会发现Page.aspx/a // c将匹配到{R:1} ='Page',{R:2} = 'a',{R:3} =''和{R:4} =''c。一旦重写,它应该产生Page.aspx?1 = A&2 =&3 = C – JoshKraker 2010-10-29 00:38:47