web.config IIS要忽略的一些标记或属性

时间:2011-08-13 00:16:34

标签: xml url-rewriting web-config

我正在创建一个动态编辑web.config的系统。原因是,我正在创建一个网站所有者可以创建其他部分的网站,例如blog部分,我希望系统使用XmlReader将相应的重写规则添加到web.config

我可以访问重写规则,没有问题,但我的问题是,是否有任何特殊标记我可以包装自定义生成的规则,或者我可以添加到规则中的特殊属性,不会改变IIS以任何方式行为,但允许我的代码区分预定义(手写)规则和自动生成的规则。我想要这样的东西:

            <rule name="AHandWrittenRule" stopProcessing="true">
                <match url="^photo/([^/]+)/?$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/PhotoView.aspx?ID={R:1}" />
            </rule>

            <rule name="AnAutoGeneratedRule" AUTOGENERATED="true" stopProcessing="true">
                <match url="^blog/([^/]+)/?$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/BlogView.aspx?ID={R:1}" />
            </rule>

请注意第二条规则中的AUTOGENERATED标记。或者另一种选择是:

            <rule name="AHandWrittenRule" stopProcessing="true">
                <match url="^photo/([^/]+)/?$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/PhotoView.aspx?ID={R:1}" />
            </rule>
        <autoGeneratedRules>
            <rule name="AnAutoGeneratedRule" stopProcessing="true">
                <match url="^blog/([^/]+)/?$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/BlogView.aspx?ID={R:1}" />
            </rule>
        </autoGeneratedRules>

这两个中的任何一个都可能吗?因为如果我不能这样做,我会查看name的规则并读/写一个特殊的前缀或其他一些自定义的“标记”,但它是正确的方式,似乎有点hacky对我来说。

1 个答案:

答案 0 :(得分:0)

我最终用不同的方法实现了我想要的,而没有触及web.config。

显然,对于未识别的标签和属性,web.config过于严格(无论如何应该是这样)。