Detectamos um problema no IIS 7.5, em que temos um sistema de implantação simples que consiste no seguinte:
Crie um arquivo zip do novo webroot, composto por três pastas:
Api
Site
Manager
Isso é descompactado em uma nova pasta (digamos que chamamos de "SITE_REV1") e contém um script que chama o seguinte (um para cada raiz da web):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
Isso geralmente funciona, em 9/10 vezes. Em alguns casos, a raiz da web parece ter sido atualizada corretamente (se eu inspecionar configurações básicas no Gerenciador do IIS, o caminho parece correto), mas o site em execução na verdade está apontado para o local antigo. A única maneira de conseguirmos "consertar" é executando uma redefinição do IIS. Não é suficiente reciclar o pool de aplicativos em questão.
Às vezes, parece até necessário fazer uma reinicialização, mas não tenho 100% de certeza de que seja preciso (nem sempre fui eu quem estava corrigindo o problema).
Reescrevi o script usando o Powershell e o módulo de administração da Web, esperando que houvesse uma falha no appcmd, mas o mesmo problema ocorre.
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
Alguém já experimentou algo assim? Alguém tem alguma idéia do que está acontecendo e o que posso tentar fazer para evitar esse problema? Fazer uma redefinição do IIS não é realmente uma boa opção para nós, porque isso afetaria todos os sites no servidor toda vez que tentamos implantar alterações em um único site.
EDIT: identificamos que uma partida / parada do site (NÃO o pool de aplicativos) no Gerenciador do IIS resolve o caminho físico incorreto, mas se eu parar o site usando appcmd, altere o caminho físico e inicie-o, ainda sofro de os mesmos problemas. Estou em branco ...
Respostas:
Alterar o caminho físico do Gerenciador do IIS funciona corretamente e imediatamente?
Você pode tentar o seguinte comando. Diferentemente, a sintaxe deve ter o mesmo resultado, mas talvez funcione um pouco diferente internamente, fazendo com que o IIS capte as alterações (melhor):
C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"
fonte
Uma reciclagem de pool de aplicativos deve ser suficiente por site. Estes são processos independentes. Com frequência, os artigos e processos promovem o uso do iisreset. Parar / iniciar o pool de aplicativos para um site é uma opção? Essa é uma solução de servidor único e você está tentando minimizar o tempo de inatividade do site? Há uma opção para Desativar reciclagem nas alterações de configuração. Então você pode reciclar manualmente. Quando o problema ocorre, o que está listado no applicationHost.config?
fonte