TLDR:出站规则不适用于更新面板部分回发
我正在使用 IIS 7.5 URL 重写器将图像路径映射到 cdn。
这是正在发生的事情的简化版本
<Repeater Goes Here>
<img alt="alt text" src="<%#getImageSource(Eval("Filename").ToString() )%>">
<End of Repeater>
假设函数 getImageSource 返回"/images/someimage.jpg"
这反过来重写为
<img alt="alt text" src="http://img.cdn.com/someimage.jpg">
使这项工作的出站规则是:
<rule name="Out_Rewrite_ServeCookieLessImages" preCondition="ResponseIsHtml" enabled="true">
<match filterByTags="Img" pattern="^/Images/(.*)$"/>
<action type="Rewrite" value="http://img.cdn.com/{R:1}"/>
</rule>
<preConditions>
<preCondition name="ResponseIsHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/>
<add input="{URL}" pattern="\.axd.*$" negate="true"/>
</preCondition>
</preConditions>
问题是在更新面板中使用中继器时
异步回发后输出的实际 html 是
<img alt="alt text" src="/Images/someimage.jpg">
代替
<img alt="alt text" src="http://img.cdn.com/someimage.jpg">
我如何让更新面板正确解析输出?
提前致谢
编辑:我在这一点上的猜测是它必须对页面生命周期做一些事情......或者也许调用重写模块的顺序......将保持更新