0

我在我的 ASP.NET Web 应用程序中遇到问题,从请求 url 中故意删除连续的反斜杠。

我会请求类似:localhost/Page/A//C

但是当请求到达页面时,原始 url 是:localhost/Page/A/C

不确定这是否是罪魁祸首,但我确实有一个 Url 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

请帮忙!!

4

1 回答 1

0

你可能会改变你的正则表达式是这样的:

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

我在您的匹配项后添加了一个“+”到“/”,这将它们从接受单个“/”更改为接受一个或多个。

此外,我终其一生都无法弄清楚为什么要在其中添加额外的斜线。可能是个坏主意。出于任何原因重新考虑这样做。

于 2010-10-28T02:34:25.610 回答