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

kne*_*ola 6 windows-10 iis-10

在最新的 Win10 更新 (1803) 更新之后,IIS 开始为在 WSL Bash(适用于 Linux 的 Windows 子系统)中创建的文件夹报告错误“404 Not Found”。

文件夹安全设置(在 Windows 资源管理器中)看起来不错。我什至尝试在文件夹上执行“替换所有子对象权限”,但没有帮助。

该文件夹存储在 Windows 分区上,并在 WLS 中作为/mnt/c/inetpub/wwwroot/.

IIS 应用程序池正在运行AppPoolIdentity(将其更改为我的用户没有帮助)。

有谁知道发生了什么?如何解决这个问题?

PS 我正在使用 bash 脚本来构建我的网站。

编辑

打开“目录浏览”后,我发现 IIS 确实列出了目录中包含的文件。这意味着它可以访问它。但是由于某种原因,它无法为它们(文件)提供服务。

kne*_*ola 5

此问题是由 Win build 17110 中引入的更改引起的,该更改使在 Bash 中创建的所有新目录都区分大小写(NTFS 区分大小写标志设置为enabled)。

如果为目录设置了标志,可以通过 CMD 检查:

fsutil file queryCaseSensitiveInfo C:\interpub\wwwroot\xyz
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果此标志设置为enabled.

这个问题可以通过配置 WSL 来解决enabled,默认情况下不设置这个标志。这可以通过编辑/etc/wsl.conf和添加case=false到选项列表来完成:

[automount]
options="case=off"
Run Code Online (Sandbox Code Playgroud)