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

Как отключить просмотр каталога в Web.Config

У меня есть WebSite, и я люблю как Запретить браузер каталогов из файла web.config.

Здесь код, который я использую, помещен в ROOT. Не работает. Я тестирую его локально, так что с URL LIKE http://localhost:3214/ Я все же могу просматривать каталог для CMS.

  • Что я делаю неправильно?
  • Должен ли он работать даже на локальной машине?

Спасибо за вашу поддержку!

<configuration>
  <location path="Cms">
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>
</configuration>

Некоторые ресурсы:

http://blogs.iis.net/bills/archive/2008/03/24/how-to-enable-directory-browsing-with-iis7-web-config.aspx

http://www.expta.com/2008/03/configuring-virtual-directories-with.html

4b9b3361

Ответ 1

Во-первых: не все работает в блоке <location>.

Я не могу найти положительное утверждение, что <system.webServer> не поддерживается в <location>, но я не могу найти случаи, когда предполагается, что это разрешено. Доказательства этого в (глобальном) machine.config, где раздел system.webserver определен для использования обработчика IgnoreSection: ie. он не обрабатывается стандартной реализацией System.Configuration, и это стандартная реализация обработки конфигурации, которая обеспечивает поддержку <location>.

Попробуйте добавить web.config в папку Cms с элементом directoryBrowse, чтобы подтвердить, что просмотр заблокирован.

Ответ 2

Гиббок, здесь нет ничего плохого, не паникуйте:)

Предполагая, что вы просматриваете свой сайт со встроенного сервера внутри Visual Studio, это обычно нормальный случай.

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

Попробуйте и разместите этот сайт в IIS и сообщите нам, что произошло, спасибо.

Ответ 3

<directoryBrowse> директива управляет списком каталога только через протокол http: http://msdn.microsoft.com/en-us/library/ms691327%28v=vs.90%29.aspx

Он не будет влиять на код, пытаясь получить доступ к каталогу из любого другого (или даже собственного) приложения.

@Edit: после редактирования, и если я получу вас правильно, я думаю, что вы подразумеваете под Deny Directory Browser - это назначенная функциональность: покажите содержимое каталога в указанном пути с помощью браузера. И да, вероятно, он не будет работать на локальном сервере разработки. Попробуйте на IIs!

Ответ 4

Я пытался использовать тот же код. То, что у вас есть, на самом деле правильное. Вот reference.

Конечно, это не работало для меня, и я не мог понять, почему, пока я не прочитал сообщение Ричарда и не вспомнил, что кто-то поместил файл web.config в этот каталог. Этот файл переопределяет поведение в главном файле web.config. В подкаталоге web.config была включена опция directoryBrowse (а также много других обработчиков yikes!). Удалите этот файл и то, что у вас выше, работает для меня. Он фактически передает запрос следующему обработчику, что именно то, что я хотел.

Я использую IIS 7 на своей локальной машине.