Почему 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
просто хорошо!