web.config некоторые теги или атрибуты, которые будут игнорироваться IIS - PullRequest
0 голосов
/ 13 августа 2011

Я создаю систему, в которой web.config будет редактироваться динамически.Причина этого в том, что я создаю веб-сайт, на котором владелец сайта может создавать дополнительные разделы, например, раздел blog, и я хочу, чтобы система добавила соответствующее правило перезаписи в web.config, используя XmlReader.

Я могу получить доступ к правилам перезаписи, никаких проблем с этим нет, но мой вопрос в том, есть ли какой-нибудь специальный тег, который я могу обернуть, сгенерированные пользователем правила, или специальный атрибут, который я могу добавить в правила,не изменять поведение 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 правил и прочту / напишу специальный префикс или какой-то другой пользовательский «маркер», но это правильный путь, и он кажется мне немного хакерским.

1 Ответ

0 голосов
/ 07 августа 2012

В итоге я достиг того, что хотел, другим подходом, не касаясь web.config.

Очевидно, что web.config слишком строг (так или иначе должно быть) в отношении неопознанных тегов и атрибутов.

...