微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么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就好了!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐