Как отключить просмотр каталога в Web.Config - PullRequest
20 голосов
/ 05 апреля 2011

У меня есть веб-сайт, и я вроде Запретить просмотр каталога из файла 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

Ответы [ 4 ]

7 голосов
/ 05 апреля 2011

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

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

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

5 голосов
/ 05 апреля 2011

Гиббок, здесь все в порядке, не паникуйте:)

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

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

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

0 голосов
/ 20 мая 2011

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

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

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

0 голосов
/ 05 апреля 2011

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

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

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

...