【发布时间】:2010-10-29 17:41:04
【问题描述】:
是否可以将 IIS7 重写模块创建的规则从根 web 配置移动到它自己的 web 配置文件中,就像使用 appsettings 一样,如果可以,如何?
【问题讨论】:
-
你能做到吗?我还是很难过……
是否可以将 IIS7 重写模块创建的规则从根 web 配置移动到它自己的 web 配置文件中,就像使用 appsettings 一样,如果可以,如何?
【问题讨论】:
我找到了configuration documentation,但它似乎没有涵盖 configSource 属性的使用。
我的猜测是 <rules /> 元素被实现为具有 configSource 属性的 SectionInformation 而 <rewrite /> 元素是 ConfigurationSection 而没有。
【讨论】:
这在 web.config 中对我有用:
<system.webServer>
<rewrite>
<rules configSource="web.rules.config" />
</rewrite>
</system.webServer>
一个很酷的事情是IIS Configuration Editor 在您编辑规则并将更改写回外部文件时尊重此外部文件。
如果你输入:
<system.webServer>
<rewrite configSource="web.rules.config" />
</system.webServer>
它不起作用,你得到 HTTP 错误 500.19 内部服务器错误:
Error Code: 0x8007000d
Config Error: Unrecognized attribute 'configSource'
任何人都可以指向rewrite 元素和configSource 属性上的权威MSDN 帮助页面吗? MSDN article on system.webServer 没有提到 rewrite 元素,我无法通过 google 找到 MSDN 页面。
【讨论】:
我似乎无法让它工作,但它的描述方式是:
<rewrite>
<rewriteMaps configSource="external.config">
</rewriteMaps>
</rewrite>
然后在 external.config 文件中添加您的规则:
<rewriteMaps>
<rewriteMap ...
...
</rewriteMaps>
您必须对整个 rewriteMaps 部分执行此操作:根据此论坛帖子,您不能对 rewriteMap 执行此操作:http://forums.iis.net/t/1154113.aspx
【讨论】: