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

11

Você poderia me dizer o que exatamente 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 a reinicialização automática (ou recarregar o web.config)?

Bastien Vandamme
fonte
Você pode tentar ativar a auditoria de acesso a arquivos para verificar se o IIS lê ou não o web.config após modificá-lo.
Eric H

Respostas:

10

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

Antes do IIS7, apenas as alterações do ASP.NET causavam 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 seja reciclado agora.

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

Scott Forsyth - MVP
fonte
4

O aplicativo que usa o web.config será reiniciado quando você o alterar, há mais informações aqui:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

Não conheço nenhuma maneira de impedir que isso aconteça (e não sei por que você desejaria - talvez você possa fornecer mais alguns detalhes do que está tentando alcançar).

Whisk
fonte
3

[APENAS UMA NOTA]

Eu sei que isso é antigo, mas isso ainda merece ser observado.

Scott Forsyth - A resposta do MVP está incorreta.

O ASP.NET AppDomain é reiniciado sempre que você 'toca' no web.config.

Isto está errado.


A resposta do Whisk é a resposta tecnicamente mais correta e completa, pois inclui um link para o MSDN que inclui um detalhe importante:

Quando uma reinicialização do aplicativo é necessária, o ASP.NET atenderá a todas as solicitações pendentes do domínio do aplicativo existente e dos assemblies antigos antes de reiniciar o domínio do aplicativo e carregar os novos assemblies.

Isso é particularmente importante quando estamos falando de serviços da web. Isso indica que pode ser bom reiniciar com segurança no meio do dia.

user1416420
fonte