为什么IIS无法在Windows上的Bash创建的文件夹中读取Web.config?

前端之家收集整理的这篇文章主要介绍了为什么IIS无法在Windows上的Bash创建的文件夹中读取Web.config?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我使用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就好了!

猜你在找的Windows相关文章