Если я использую bash (из Ubuntu 18.04, работающая через подсистему Windows для Linux), чтобы создать каталог в моем профиле Windows:
$ mkdir /mnt/c/Users/mdmower/source/repos/WebBash
тогда IIS 10 не может читать Web.config
прямо в этом каталоге. В качестве минимального примера попробуйте поставить этот простой Web.config
в каталог, созданный проводником Windows, а также в другой каталог, созданный bash:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<clear />
</handlers>
</system.webServer>
</configuration>
Теперь добавьте веб-сайт в IIS 10, который указывает на каталог, созданный в Windows. После добавления веб-сайта перейдите в раздел Сопоставление обработчиков. Вы должны увидеть, что он очищен (это единственная функция образца 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
Кредит для therealkenc в 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 позволяет мне хранить оба файла в одной папке). IIS читать web.config
просто хорошо!