如果我使用 bash(来自通过 Windows Subsystem for Linux 运行的 Ubuntu 18.04)在我的 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 中创建的目录的网站。添加网站后,访问 Handlers Mapping 部分。您应该看到它已被清除(这是示例的唯一功能Web.config
)。将网站的源目录更改为在 bash 中创建的目录。Handlers Mapping 部分不再被清除。
虽然我通常会假设这是由于权限引起的,但我无法在每个目录的安全设置(属性 > 安全 > 高级)中找到任何差异。unix 权限(无论如何都不应该有影响)对于两个目录也是相同的(drwxrwxrwx
)。PowerShell 的 Get-ItemProperty 报告称,两个目录具有相同的模式(d-----
)且没有 LinkType。
为什么 IIS 10 无法读取用 bash 创建的目录?
软件版本:
Windows 10 x64 版本 1803(操作系统内部版本 17134.320)
IIS 10 版本 10.0.17134.1
答案1
感谢 thealkencgithub.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 资源管理器让我将两者保存在同一个文件夹中)。IISweb.config
可以正常读取!