Почему IIS не может прочитать Web.config в папке, созданной Bash в Windows?

Если я использую bash (из Ubuntu 18.04, работающей через подсистему Windows для Linux), чтобы создать каталог под моим профилем Windows:

$ mkdir /mnt/c/Users/mdmower/source/repos/WebBash

тогда IIS 10 не может прочитать Web.config прямо под этим каталогом. Как минимальный пример, попробуйте Web.config в каталог, созданный Windows Explorer, а также в другой каталог, созданный bash:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <clear />
    </handlers>
  </system.webServer>
</configuration>

Теперь добавьте веб-сайт в IIS 10, который указывает на каталог, созданный в Windows. После добавления веб-сайта, посетите раздел Mapping обработчиков. Вы должны увидеть, что это очищено (это единственная функция образца Web.config). Измените исходный каталог сайта на каталог, созданный в bash. Раздел "Отображение обработчиков" больше не очищается.

Хотя обычно я предполагаю, что это связано с разрешениями, я не могу найти единой разницы в настройках безопасности каждого каталога (Свойства> Безопасность> Дополнительно). Разрешения Unix - которые не должны иметь значения в любом случае - также идентичны для двух каталогов (drwxrwxrwx). Get-ItemProperty PowerShell сообщает, что оба каталога имеют одинаковый режим (d-----) и не LinkType.

Почему IIS 10 не может читать из каталога, созданного с помощью bash?

Версии программного обеспечения:
Windows 10 x64 версии 1803 (сборка ОС 17134.320)
IIS 10 версия 10.0.17134.1

1 ответ

Благодарим thealkenc по адресу https://github.com/Microsoft/WSL/issues/3596 за указание правильного направления. Проблема связана с чувствительностью к регистру для каждого каталога и WSL.

Запросить каталог с учетом регистра:

fsutil.exe file queryCaseSensitiveInfo <path>

Установите чувствительный к регистру флаг каталога:

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable

После отключения чувствительного к регистру флага на WebBash каталог, IIS читать Web.config просто отлично. Это привело меня к рассмотрению возможности того, что IIS искал строчные буквы web.config, Я снова включил чувствительность к регистру в каталоге WebBash и скопировал Web.config в web.config (Да, Windows Explorer позволяет хранить оба файла в одной папке). IIS читать web.config просто хорошо!

Другие вопросы по тегам