在最近的更新 Win10 更新 (1803) 之后,IIS 开始报告在 WSL Bash(适用于 Linux 的 Windows 子系统)中创建的文件夹的错误“404 未找到”。
文件夹安全设置(在 Windows 资源管理器中)看起来不错。我甚至尝试对文件夹执行“替换所有子对象权限”,但无济于事。
该文件夹存储在 Windows 分区上,并在 WLS 中以 的形式访问/mnt/c/inetpub/wwwroot/
。
IIS 应用程序池正在运行AppPoolIdentity
(将其更改为我的用户没有帮助)。
有人知道发生了什么吗?如何解决?
PS 我正在使用 bash 脚本来构建我的网站。
编辑
打开“目录浏览”后,我发现 IIS 确实列出了目录中包含的文件。这意味着它可以访问它。但是由于某种原因,它无法为它们(文件)提供服务。
答案1
该问题是由 Win build 17110 中引入的更改引起的,该更改使得在 Bash 中创建的所有新目录都区分大小写(NTFS 区分大小写标志设置为enabled
)。
如果目录设置了标志,可以通过 CMD 检查:
fsutil file queryCaseSensitiveInfo C:\interpub\wwwroot\xyz
出于某种原因,如果将此标志设置为,IIS 10.0 在访问目录时会出现问题enabled
。
enabled
可以通过配置 WSL默认不将此标志设置为来解决此问题。这可以通过编辑/etc/wsl.conf
并添加case=false
到选项列表来完成:
[automount]
options="case=off"
答案2
此问题是由 Win build 17110 中引入的更改引起的,该更改使得在 Bash 中创建的所有新目录都区分大小写(NTFS 区分大小写标志设置为启用)。— knee-cola
确保已禁用区分大小写:
在 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
链接: