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
私を正しい方向に向けてくれた 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.config
をweb.config
にコピーしました(そうです、Windowsエクスプローラーで両方を保持できます同じフォルダ)IIS web.config
を読んでください!