如果我使用bash(从
Ubuntu 18.04 running via Windows Subsystem for Linux开始)在我的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中创建的目录的网站.添加网站后,请访问“处理程序映射”部分.你应该看到它被清除(这是示例Web.config的唯一功能).将网站的源目录更改为在bash中创建的目录. “处理程序映射”部分不再清除.
虽然我通常认为这是由于权限,但我找不到每个目录的安全设置(属性>安全>高级)的单一差异. unix权限 – 无论如何都不重要 – 对于两个目录(drwxrwxrwx)也是相同的. PowerShell的Get-ItemProperty报告两个目录具有相同的模式(d —–)且没有LinkType.
为什么IIS 10不能从使用bash创建的目录中读取?
软件版本:
Windows 10 x64版本1803(OS Build 17134.320)
IIS 10版本10.0.17134.1
感谢他们在
github.com/Microsoft/WSL/issues/3596指出我指向正确的方向.该问题与
Per-directory case sensitivity and 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资源管理器允许我将它们保存在同一个文件夹中). IIS读取web.config就好了!