在我的iis7盒子上,我的web.config中有一个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 ==&gt; /default.aspx
/Default.aspx/UpdateOrder ==&gt; /default.aspx/updateorder
我希望后一个例子重写为 /default.aspx/UpdateOrder
我的正则表达技巧无法让我在那里。
提前致谢, 约翰
答案 0 :(得分: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>