Проблема просмотра каталога IIS в виртуальном каталоге - PullRequest
2 голосов
/ 10 мая 2010

У меня есть две разные виртуальные директории, сопоставленные с одной и той же директорией в ОС. В одном из этих виртуальных каталогов мне нужно отключить просмотр папок, а в другом - включить его.

Проблема в том, что когда я менял одну из них, менялась и другая. Я думаю, что эта проблема связана с тем, что оба виртуальных каталога указывают на одну и ту же папку в ОС, но с IIS6 у меня была такая же конфигурация без проблем.

Есть идеи обойти это?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 09 декабря 2010

IIS 7 действительно использует файл web.config в каталогах для настройки, однако вы также можете отказаться от использования файла web.config (т. Е. Не использовать инструмент IIS Manager) и вместо включения просмотра каталогов через IIS Manager. просто отредактируйте ваш applicationHost.config, чтобы настроить просмотр каталогов в единственном виртуальном каталоге, для которого вы действительно хотите включить просмотр. Это позволит вам просматривать один виртуальный каталог, но не другой, даже если оба указывают на один и тот же физический каталог.

Вот пример: Отредактируйте файл applicationHost.config. Этот файл находится в вашем каталоге % WINDIR% \ System32 \ inetsrv \ config .

1) Перейти в конец файла. Вы должны найти закрывающий тег XML для раздела конфигурации:

</configuration>

2) над этим тегом добавьте тег местоположения, используя в качестве руководства следующее:

 <location path="{website name}/{path to virtual directory}">
      <system.webServer>
           <directoryBrowse enabled="true" />
      </system.webServer>
 </location>

Замените {имя веб-сайта} на имя веб-сайта (как видно из IIS Manager) для рассматриваемого веб-сайта, а {путь к виртуальному каталогу} - на путь к виртуальному каталогу, который вы хотите просматривать. Пример:

<location path="MyWebsite/imagelist">

Теперь, скажем, в приведенном выше примере, imagelist - это виртуальный каталог, который указывает на {your webroot} / pics, и у вас есть другой виртуальный каталог с именем images , который также указывает на { ваш webroot} / фото. Когда посетитель заходит на yoursite.com / images , он не видит список изображений, но когда он заходит на yoursite.com / imagelist , ему возвращается список каталогов.

1 голос
/ 07 января 2015

Есть много возможностей, но то, с чем я столкнулся и исправил это, как показано ниже.

  1. .NET Framework в IIS не соответствует указанному в web.config. Измените структуру в IIS на ту, которую создал проект. (если создан проект или решение 4.5 / 4.0, измените IIS на 4.0 в настройках продвижения вашего сайта.)

  2. Проверьте, правильно ли закрыты теги в web.config для всех узлов.

Это должно работать !!

Спасибо, Ананд

0 голосов
/ 10 мая 2010

Причина, по которой поведение отличается от IIS6, заключается в том, что IIS6 сохранил свойство для разрешения просмотра каталога в метабазе IIS6 DirBrowseFlags свойства виртуального каталога , который имеет уникальную запись для каждого виртуального каталога, тогда как в IIS7 это свойство теперь сохраняется только в Web.config файле :

<system.webServer>
    <!-- ... -->
    <directoryBrowse enabled="true" />
</system.webServer>

Поскольку оба ваших виртуальных каталога в IIS7 совместно используют один и тот же физический каталог, они оба используют один и тот же файл Web.config, и поэтому вы обнаружите, что изменение свойства в одном приводит к тому, что изменение появляется в другом, так как они ' оба изменяют один и тот же файл Web.config.

(Я не знаю хорошего обходного пути для IIS7 для вас в данный момент.)

...