2010-09-22 49 views
27

我正在使用IIS7 UrlRewrite模块。 我在web.config <system.webServer><rewrite>部分设置了我的规则。 我想知道是否有一种方法可以在一个外部xml文件中而不是在web.config文件中定义规则。 谢谢。IIS7 urlrewrite模块 - 外部xml文件中的规则

+0

不是我所知道的。你为什么需要这个? – Remy 2010-09-23 10:43:18

+3

@Remy:延迟响应,但是当你有很多重写规则时,它会提高web.config的可读性。无论如何,这就是我的原因。 – magnattic 2013-10-25 13:28:38

+0

在IIS> = 7.5记得从这里安装URL重写组件https://www.iis.net/downloads/microsoft/url-rewrite – 2018-02-20 18:02:47

回答

50

是的,你可以使用configSource属性一样,你可以与其他指向外部文件web.config部分。在web.config中:

<rewrite> 
    <rules configSource="Rewrite.config" /> 
</rewrite> 

而且在规则配置文件:

<rules> 
    <rule name="some rule"> 
     <!-- rule details here ---> 
    </rule> 
</rules> 

,您仍然可以甚至使用IIS管理器编辑规则,它会只是工作。使用这种方法的一个小问题是:当你做出改变并保存这样的外部文件时,它不会像web.config那样对应用程序进行再循环。因此,如果您正在编辑规则并希望看到该规则生效,则需要通过编辑并保存它来手动戳动web.config。

另一个参考:Moving IIS7 url rewrite section out of the web.config file

+0

您确定应用程序未被外部更改回收吗?配置部分还有另一个名为[RestartOnExternalChanges]的属性(http://msdn.microsoft.com/zh-cn/library/system.configuration.sectioninformation.restartonexternalchanges.aspx),它的默认值为true。 – magnattic 2013-10-25 13:26:55

+0

@atticae我相信RestartOnExternalChanges仅适用于自定义的

元素,其中重写规则不适用。 http://forums.iis.net/t/1155629.aspx我不确定自那以后有什么变化,这个线程是从2009年开始的...... – 2013-10-25 13:53:00

+0

不幸的是,Rewrite.config中的智能感知不起作用。有什么办法可以解决这个问题吗? – 2015-09-11 04:46:01