Добавление тега <location>в web.config делает папки веб-сайта недоступными. Как исправить? - PullRequest
0 голосов
/ 12 октября 2019

Я добавил приложение под моим main сайтом, который является более новой версией основного сайта. Подприложение с именем V2 будет использоваться для предварительного просмотра изменений на основном веб-сайте.

Чтобы получить доступ к V2 с основного веб-сайта, мне нужно изменить web.config, чтобы включить теги <system.web> и <system.webServer> в тег <location path="." inheritInChildApplications="false">.

Веб-сайт V2 работает должным образом (то есть //main/V2), но все подпапки в основной и V2 не могут быть прочитаны. Стили и изображения находятся в папках, которые недоступны. Это похоже на проблему с разрешениями. Приложение настроено так, чтобы предоставить всем пользователям полный доступ к корню и всем подкаталогам.

    <authentication mode="None" />
    <authorization>
      <allow users="*" />
    </authorization>

Что мне нужно сделать, чтобы все подкаталоги были доступны?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Проблема с правами доступа была вызвана тегом <location> в web.config. Тегу <system.webServer><validation> не понравилось, когда его помещают в тег <location>, поэтому я его вытащил;вот так.

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>

<location path="." inheritInChildApplications="false">
  <system.webServer>
    ...

Теперь все папки доступны для чтения.

0 голосов
/ 14 октября 2019

Какое сообщение об ошибке вы получили при доступе к подпапке? При применении конфигурации в <location path="." inheritInChildApplications="false"> подпапка не будет применена.

IIS будет указывать <add accessType="Allow" users="*" /> в applicationhost.config по умолчанию. Поэтому, если вы укажете <allow users="*" /> в web.config, вы должны удалить настройку по умолчанию в applicationhost.config, чтобы избежать ошибки дублированного ключа.

Когда вы применяете только inheritInChildApplications="false", <allow users="*" /> будет работать толькона уровне корня "location='.'". И для этих подпапок не было указано правило авторизации. Тогда вы можете получить 401.2 при доступе к этой папке.

Пожалуйста, установите правило авторизации для этих путей.

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

https://docs.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis

...