IIS 报告在 WSL Bash 中创建的文件夹的“404 Not Found”错误

IIS 报告在 WSL Bash 中创建的文件夹的“404 Not Found”错误

在最近的更新 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

链接:

相关内容