После последнего обновления Win10 update (1803) IIS начал сообщать об ошибке «404 Not Found» для папок, созданных в WSL Bash (подсистема Windows для Linux).
Настройки безопасности папок (в проводнике Windows) выглядят нормально. Я даже пытался выполнить «Заменить все права доступа дочерних объектов» к папке, но это не помогло.
Папка хранится в разделе Windows и доступна в WLS как /mnt/c/inetpub/wwwroot/
.
Пул приложений IIS работает под AppPoolIdentity
(изменение на моего пользователя не помогло).
Кто-нибудь знает, что происходит? Как это исправить?
P.S. Я использую сценарий bash для создания своего веб-сайта.
редактировать
После включения «Просмотр каталога» я обнаружил, что IIS действительно перечисляет файлы, содержащиеся в каталоге. Это означает, что он может получить к нему доступ. Однако по какой-то причине он не может обслуживать их (файлы).
Эта проблема была вызвана изменением, внесенным в сборку Win 17110, которое сделало все новые каталоги, созданные в Bash, чувствительными к регистру (для флага чувствительности к регистру NTFS установлено значение enabled
).
Если флаг установлен для каталога, можно проверить через CMD:
fsutil file queryCaseSensitiveInfo C:\interpub\wwwroot\xyz
По какой-то причине у IIS 10.0 возникают проблемы с доступом к каталогу, если этот флаг установлен в enabled
.
Проблема может быть решена путем настройки WSL, чтобы этот флаг не устанавливался на enabled
по умолчанию. Это можно сделать, отредактировав /etc/wsl.conf
и добавление case=false
в список опций:
[automount]
options="case=off"
Эта проблема была вызвана изменением, внесенным в сборку Win 17110, которое сделало все новые каталоги, созданные в Bash, чувствительными к регистру (для NTFS установлен флаг чувствительности к регистру). - колено
Убедитесь, что чувствительность к регистру отключена:
В cmd.exe или PowerShell:
fsutil.exe file queryCaseSensitiveInfo .
fsutil.exe file setCaseSensitiveInfo . disable
В bash.exe:
cd /
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata,case=off
Примечание. Не нужно связывать такие каталоги:
ln -s SomeDir somedir
/ets/wsl.conf:
[automount]
enabled = true
options = "case=off,metadata,umask=22,fmask=11"
mountFsTab = false
Ссылки: