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