IIS 7.5 (Express) applicationhost.config: O PhysicalPath de um diretório virtual pode ser um caminho relativo?

9

Estou configurando um site applicationhost.configpara o IIS 7.5 Express:

<site name="default" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_BIN%\..\Somewhere\Else" />
                                            <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
    </application>
    ...
</site>

Descobri que especificar caminhos relativos, como mostrado, parece não funcionar e levará a um HTTP 500.19 Internal Server Error. O IIS relata ainda um código de erro 0x8007007bque, depois de pesquisar no Google, parece indicar uma sintaxe de caminho de arquivo inválida.

Existe alguma maneira de contornar esse erro, para que eu possa usar o caminho físico relativo para a raiz do meu site?

stakx
fonte

Respostas:

6

Infelizmente não. Esse deve ser um caminho físico completo. Desde que você não planeje alterar o caminho do site com frequência, um caminho estático não deve ser um problema. Se você mudar seu caminho frequentemente para diferentes instâncias do site, considere usar o appcmd para criar um script da alteração, de forma que ela obtenha todas as subpastas.

Scott Forsyth - MVP
fonte
1
Se seria bom para o dev, por exemplo, ao ramificar se o Vdir poderia ser relativo ao arquivo de configuração que pode ser verificado no controle de origem. Algumas ideias em como fazer isso?
PilotBob
3
Infelizmente, os caminhos relativos não são suportados nas versões atuais do IIS; portanto, a solução mais limpa é usar o mesmo caminho em cada máquina. Se você deve ter caminhos diferentes em máquinas diferentes (eu assumo máquinas dev), então você pode tentar uma variável de ambiente. Crie uma variável de ambiente do sistema para que fique disponível para o IIS e use-a para a raiz do caminho nos sistemas individuais.
Scott Forsyth - MVP
2
Parece que algumas variáveis ​​de ambiente são suportadas, por exemplo, por exemplo <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />.
perfil completo de Uwe Keim
@UweKeim Você está certo, isso funciona com as versões atuais do IIS. O IIS 10 agora oferece suporte a variáveis ​​no PhysicalPath. Observe que% IIS_SITES_HOME% é para o IIS Express. Essa variável não existe na versão completa do IIS. No entanto, outras variáveis ​​do sistema funcionam.
Scott Forsyth - MVP