IIS 7 URL重写模块web.config第c#节



我们使用带有asp.net C#的IIS7 URL重写模块,所有URL都经过配置并直接写入web.config:

<system.webServer>
    <!-- ... -->
    <rewrite>
        <rules>
            <clear />
            <rule name="Category URL" stopProcessing="true">
                <match url="somepage.aspx" ignoreCase="false"/>
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{QUERY_STRING}" pattern="REDIRECTION=true"
                         ignoreCase="false"/>
                    <add input="{QUERY_STRING}" pattern="categoryid=([^&amp;]*)"/>
                </conditions>
                <action type="Redirect" url="http://{HTTP_HOST}/browsing/categorylanding.aspx?navcategoryid={C:1}"/>
            </rule>
        </rules>
    </rewrite>
 </system.webServer>

我需要把它移到一个部分,这样我就可以有单独的QA、DEV和生产规则,我会在该部分定义什么类型?

<configSections>
    <section name="IISURLRewriteSection" type="???"/>
</configSections>

一旦从web.config外部移动到另一个自定义配置文件,IIS会自动获取这些设置吗?

我们求助于编写自己的HTTPModule,因为从调试的角度来看,IIS级别出现的任何问题都必须由运营团队参与——只需遵循我们组织中定义的流程:(

imho的最佳解决方案是将配置详细信息移动到外部文件中,然后可以根据环境交换这些文件。

使用从web.config文件中移出IIS7 url重写部分中描述的方法可以很容易地完成这一操作,在Web.config文件中会有这样的内容:

<system.webServer>
    <rewrite configSource="rewrite.config"/>
</system.webServer>

然后,您可以将特定于环境的内容存储在一个单独的文件rewrite.config中,如下所示:

<rewrite>
    <rules>
        <clear />
        <rule name="Category URL" stopProcessing="true">
            <!-- ... --->
        </rule>
    </rules>
</rewrite>

最新更新