Подтвердить что ты не робот

Укажите несколько каталогов в элементе пути Web.Config Location Path

В моем файле 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>
4b9b3361

Ответ 1

извините, но свойство path не позволяет использовать "," поэтому вы должны написать тег для всего пути, Или вы можете создать web.config в каждом каталоге.

Ответ 2

Вы не можете указать несколько элементов в атрибуте 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 в каждом разделе.

Ответ 3

можно установить путь к определенной папке. Например, у нас есть несколько страниц aspx:

  • /data/pages/form1.aspx
  • /data/pages/form2.aspx
  • /data/pages/form3.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 будут затронуты.

Ответ 4

У меня была похожая проблема. так что пошли с обычным способом создания отдельных тегов, а не другое лучшее решение.