Pergunta

i só foi capaz de ler até que ASP.NET detecta alterações em arquivos específicos como arquivos aspx, DLLs e outros. Ele vai reiniciar-se, terminar solicitações de funcionamento atuais e novos pedidos com os novos arquivos implantados.

Mas o que está acontecendo no tempo do primeiro beeing arquivo copiado até o último foi trocado? Se eu trocar o primeiro arquivo DLL, em seguida, um pedido vem em mas os outros arquivos DLL estão em uma versão mais antiga - que vai apenas falhar? Vai asp.net esperar por alguns segundos e só começa em si novo após X segundos sem alterações de arquivos (relevantes)?

Thx!

Foi útil?

Solução

Você tem 4 perguntas aqui: O que está acontecendo no momento a partir do primeiro arquivo beeing copiados até que o último foi trocado -? Há um tempo definido, enquanto .net espera para ver se quaisquer outros arquivos foram modificados antes de começar-se o novo domínio de aplicativo com o novo dll é carregado.

Se eu trocar o primeiro arquivo DLL, em seguida, um pedido vem em mas os outros arquivos DLL estão em uma versão mais antiga - que vai apenas falhar -? Depende do que código mudanças estão nas DLL . Se o novo dll pode funcionar bem com o código antigo, em seguida, ele vai ficar bem. Mas se o domínio de aplicativo gira-se a nova DLL e que a nova dll é dependente de algo que não está lá ainda ... então sim ele irá lançar uma exceção.

irá esperar asp.net por alguns segundos e só em si começa nova após X segundos sem alterações de arquivos (relevantes) - Sim. Eu não tenho sido capaz de encontrar o tempo que o tempo é. Mas, na minha experiência pessoal é em algum lugar no segundo intervalo 1-2.

Eu também achei uma boa explicação aqui no domínio de aplicativo e re-carregamento de DLL: http://odetocode.com/Articles/305.aspx

Se você copiar um atualizados dll em um bin subdiretório do aplicativo, o runtime ASP.NET reconhece que há novo código para executar. desde ASP.NET não pode trocar o dll para o existente AppDomain, ele começa um novo AppDomain. O domínio do aplicativo antigo é “fuga parado”, isto é, pedidos existentes estão autorizados a concluir a execução, e uma vez que todos eles são terminou a AppDomain pode descarregar. O novo AppDomain começa com o novo código e começa a tomar todas as novas solicitações.

Normalmente, quando uma dll cargas em um processo, o processo bloqueia o DLL e você não pode substituir o arquivo no disco. No entanto, AppDomains têm uma característica conhecida como Shadow Copy que permite montagens para permanecer desbloqueada e substituível no disco.

O tempo de execução inicializa ASP.NET com Shadow Copy habilitado para o bin diretório. O AppDomain irá copiar qualquer dll que necessita a partir do diretório bin para um local temporária antes de travamento e carregar a DLL na memória. Shadow Copy permite-nos substituir qualquer dll no diretório bin durante uma atualização sem tomar o web aplicação offline.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top