我有一些IIS重写规则,我想根据环境变化。开发重写规则在web.config文件中,然后在web.test.config文件的末尾我有:
- <appSettings>
- ...Some app settings tranforms here
- </appSettings>
- <system.webserver>
- <rewrite xdt:Transform="Replace">
- <rules>
- ... rules here
- </rules>
- </rewrite>
- </system.webserver>
- </configuration>
当我部署到测试时,我的应用程序设置正在变化,但是IIS重写规则不是。我希望整个< rewrite>部分将被替换为变换文件中的一个(根据http://msdn.microsoft.com/en-us/library/dd465326.aspx),但没有任何变化。
我试过把xdt:Transform =“替换”xdt:Locator =“匹配(名称)”>对个别规则:
- <rule name="Test rule" stopProcessing="true" xdt:Transform="Replace" xdt:Locator="Match(name)">
但同样这没有什么区别。
甚至可以替换web.config中的重写规则,如果是这样,我缺少什么?
解决方法
因为我没有在我的主web.config中的任何重写规则,替换转换不工作。我成功地使用了Insert转换,如下:
- <system.webServer>
- <rewrite xdt:Transform="Insert">
- <rules>
- <rule name="CanonicalHostNameRule1">
- <match url="(.*)" />
- <conditions>
- <add input="{HTTP_HOST}" pattern="^www\.mysite\.com$" negate="true" />
- </conditions>
- <action type="Redirect" url="http://www.mysite.com/{R:1}" />
- </rule>
- </rules>
- </rewrite>
- </system.webServer>