web-dev-qa-db-ja.com

IIS WindowsのBashによって作成されたフォルダ内のWeb.configを読み取ることができないのはなぜですか?

Bashを使用して( Linux用のWindowsサブシステムを介して実行されている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にWebサイトを追加します。これは、Windowsで作成されたディレクトリを指します。Webサイトを追加した後、ハンドラーマッピングセクションにアクセスしてください。サンプルのWeb.config)。Webサイトのソースディレクトリをbashで作成されたディレクトリに変更します。[ハンドラーマッピング]セクションはクリアされなくなりました。

通常、これは権限によるものだと思いますが、各ディレクトリのセキュリティ設定([プロパティ]> [セキュリティ]> [詳細])に1つの違いはありません。 UNIXのパーミッション(とにかく問題ではないはずです)も、2つのディレクトリ(drwxrwxrwx)で同じです。 PowerShellのGet-ItemPropertyは、両方のディレクトリに同じモード(d-----)があり、LinkTypeがないことを報告します。

なぜIIS 10 bashで作成されたディレクトリから読み取れないのですか?

ソフトウェアのバージョン:
Windows 10 x64バージョン1803(OSビルド17134.320)
IIS10バージョン10.0.17134.1

4
MDMower

私を正しい方向に向けてくれた github.com/Microsoft/WSL/issues/3596 のtherealkencの功績です。この問題は ディレクトリごとの大文字と小文字の区別と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.configweb.configにコピーしました(そうです、Windowsエクスプローラーで両方を保持できます同じフォルダ)IIS web.configを読んでください!

Web.config and web.config in same case-sensitive Windows directory

1
MDMower