Você poderia me dizer exatamente o que acontece quando editamos o Web.config (em tempo de execução) em um servidor IIS?

9

Você poderia me dizer exatamente o que acontece quando editamos o Web.config (em tempo de execução) em um servidor IIS.

O aplicativo que depende do web.config é reiniciado automaticamente? Se sim é possível cancelar o reinício automático (ou recarregar o web.config)?

    
por Bastien Vandamme 01.11.2009 / 12:54

4 respostas

10

O AppDomain do ASP.NET é reiniciado sempre que você 'toca' no web.config. É possível desativar a notificação de alteração de arquivo (FCN) para uma pasta, mas geralmente não é a melhor aposta se você puder ajudá-lo. Se você desativá-lo, isso significa apenas que você precisa reciclar manualmente o pool de aplicativos para que as alterações entrem em vigor.

Antes do IIS7, somente as alterações do ASP.NET causariam a reciclagem do AppDomain, mas com o IIS7 e muitas das configurações do web.config, esse é um problema mais comum. Ou seja, alterar um documento padrão no Gerenciador do IIS 7 fará com que o AppDomain recicle agora.

Idealmente, você só precisa manter sua taxa de alteração baixa ou, às vezes, aplicar a alteração ao applicationHost.config (que não causa a reciclagem AppDomain) em vez de web.config.

    
por 01.11.2009 / 14:44
4

O aplicativo que usa o web.config será reiniciado quando você alterá-lo. Há mais informações aqui:

link

Eu não sei de nenhuma maneira de impedir que isso aconteça (e não sei por que você gostaria - talvez você possa fornecer mais detalhes sobre o que você está tentando alcançar).

    
por 01.11.2009 / 13:07
3

FYI - No ASP.NET 2.0, você pode usar os eventos internos de monitoramento de integridade para registrar as reinicializações do aplicativo juntamente com o motivo da reinicialização. Isso permitirá que você documente com clareza quando e com que frequência ocorre. Isso é feito editando o web.config master da máquina.

Para mais informações:

link

    
por 01.11.2009 / 16:28
3

[APENAS UMA NOTA]

Eu sei que este é um antigo, mas isso ainda merece ser notado.

Scott Forsyth - A resposta do MVP está incorreta.

The ASP.NET AppDomain is restarted whenever you 'touch' web.config.

Isso está errado.

Whisk answer é o mais tecnicamente correto & resposta completa, pois inclui um link para o MSDN que inclui um detalhe importante:

When an application restart is required, ASP.NET will serve all pending requests from the existing application domain and the old assemblies before restarting the application domain and loading the new assemblies.

Isso é particularmente importante quando estamos falando de serviços da web. Isso indica que pode ser ok fazer uma reinicialização no meio do dia com segurança.

    
por 09.11.2012 / 19:58