0

在我的 iis7 机器上,我的 web.config 中有一个 url 重写规则,它使我的所有 url 都小写:

<rule name="LowerCaseRule1" stopProcessing="false">
    <match url="^((?=.*[A-Z]).*\.aspx)(.*)" ignoreCase="false" />
    <action type="Redirect" url="{ToLower:{R:1}}{R:2}" />
</rule>

这一直运作良好,但当它们包含任何大写字母时,它也会重写我的 AJAX WebMethod 调用。因此,这些方法不会被调用。一个明显的解决方案是保持所有 WebMethods 小写,但从重写的正则表达式在前面攻击它会更合适。

目前:

/Default.aspx ==> /default.aspx

/Default.aspx/UpdateOrder ==> /default.aspx/updateorder

我希望后一个示例重写为 /default.aspx/UpdateOrder

我的正则表达式技能无法让我到达那里。

在此先感谢,约翰

4

1 回答 1

0

我把这个问题放在一边,很久以后才回来。我添加了一个否定条件,它似乎可以解决问题:

<rule name="LowerCaseRule1" stopProcessing="false">
     <match url="^((?=.*[A-Z]).*\.aspx)(.*)" ignoreCase="false" />
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_URL}" matchType="Pattern" pattern="^([^A-Z]+\.aspx/)(.*)" ignoreCase="false" negate="true" />
     </conditions>
   <action type="Redirect" url="{ToLower:{R:1}}{R:2}" />
</rule>
于 2013-09-25T22:11:41.467 回答