Ответ 1
извините, но свойство path не позволяет использовать "," поэтому вы должны написать тег для всего пути, Или вы можете создать web.config в каждом каталоге.
В моем файле ASP.NET Web Config я определил следующие элементы местоположения:
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="dir1">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<location path="dir2">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
В приведенном выше примере указано, что все каталоги будут заблокированы для анонимных пользователей, за исключением двух каталогов dir1 и dir2.
Мне любопытно, есть ли синтаксис, который я могу использовать, что позволит мне определить более одного каталога в одном элементе location. Например, было бы удобно, если бы мы могли сделать что-то вроде этого...
<location path="dir1,dir2,etc">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
извините, но свойство path не позволяет использовать "," поэтому вы должны написать тег для всего пути, Или вы можете создать web.config в каждом каталоге.
Вы не можете указать несколько элементов в атрибуте path, но вы можете использовать атрибут configSource.
Например, следующий исходный файл web.config:
<?xml version="1.0"?>
<configuration>
<location path="form1.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="form2.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="form3.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="form4.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="form5.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="form6.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Может быть заменен следующими эквивалентными файлами web.config, allow.config и deny.config:
web.config
<?xml version="1.0"?>
<configuration>
<location path="form1.aspx">
<system.web>
<authorization configSource="allow.config" />
</system.web>
</location>
<location path="form2.aspx">
<system.web>
<authorization configSource="allow.config" />
</system.web>
</location>
<location path="form3.aspx">
<system.web>
<authorization configSource="allow.config" />
</system.web>
</location>
<location path="form4.aspx">
<system.web>
<authorization configSource="deny.config" />
</system.web>
</location>
<location path="form5.aspx">
<system.web>
<authorization configSource="deny.config" />
</system.web>
</location>
<location path="form6.aspx">
<system.web>
<authorization configSource="deny.config" />
</system.web>
</location>
</configuration>
allow.config
<?xml version="1.0"?>
<authorization>
<allow users="*"/>
</authorization>
deny.config
<?xml version="1.0"?>
<authorization>
<deny users="*"/>
</authorization>
Полезность этого подхода возрастает по мере увеличения количества правил allow/deny в каждом разделе.
можно установить путь к определенной папке. Например, у нас есть несколько страниц aspx:
Создав это правило в web.config:
<location path="data/pages">
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Frame-Options" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
Все ресурсы в data/pages
будут затронуты.
У меня была похожая проблема. так что пошли с обычным способом создания отдельных тегов, а не другое лучшее решение.