Por que o IIS não pode ler o Web.config dentro de uma pasta criada pelo Bash no Windows?

4

Se eu usar o bash (do Ubuntu 18.04 em execução pelo Windows Subsystem para Linux ) criar um diretório no meu perfil do Windows:

$ mkdir /mnt/c/Users/mdmower/source/repos/WebBash

o IIS 10 não consegue ler Web.config diretamente nesse diretório. Como um exemplo mínimo, tente colocar este simples Web.config em um diretório criado pelo Windows Explorer, assim como outro diretório criado por bash:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <clear />
    </handlers>
  </system.webServer>
</configuration>

Agora, adicione um site no IIS 10 que aponte para o diretório criado no Windows. Depois de adicionar o site, visite a seção Mapeamento de manipuladores. Você deve ver que está desmarcado (esta é a única função da amostra Web.config ). Altere o diretório de origem do site para o diretório criado no bash. A seção Mapeamento de manipuladores não está mais desmarcada.

Embora eu normalmente suponha que isso se deva a permissões, não consigo encontrar uma única diferença nas configurações de segurança de cada diretório (Propriedades > Segurança > Avançadas). As permissões unix - que não devem importar de qualquer maneira - também são idênticas para os dois diretórios ( drwxrwxrwx ). Get-ItemProperty do PowerShell relata que ambos os diretórios têm o mesmo modo ( d----- ) e nenhum LinkType.

Por que o IIS 10 não pode ler o diretório criado com o bash?

Versões de software:
Windows 10 x 64 versão 1803 (compilação do sistema operacional 17134.320)
IIS 10 versão 10.0.17134.1

    
por MDMower 02.10.2018 / 17:02

1 resposta

1

Crédito para o therealkenc em github.com/Microsoft/WSL/issues/3596 por me apontar à direita direção. O problema está relacionado a Sensibilidade de maiúsculas e minúsculas por diretório WSL .

Consultar o sinalizador sensível a maiúsculas e minúsculas de um diretório:

fsutil.exe file queryCaseSensitiveInfo <path>

Defina o sinalizador sensível a maiúsculas e minúsculas de um diretório:

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable

Depois de desabilitar o sinalizador sensível a maiúsculas e minúsculas no diretório WebBash , o IIS leu muito bem o Web.config. Isso me levou a considerar a possibilidade de o IIS procurar por web.config em minúsculas. Eu reativei a diferenciação de maiúsculas e minúsculas no diretório WebBash e copiei Web.config para web.config (sim, o Windows Explorer deixa-me manter os dois na mesma pasta). O IIS leu web.config bem!

    
por 05.10.2018 / 19:32