'Aplicativo do Servidor Indisponível' no IIS7 após alternar para .net 4.0

2

Recentemente, atualizamos para o .Net 4.0 e escrevemos um script de implantação personalizado para o nosso aplicativo que usa a biblioteca Microsoft.Web.Administration para criar coisas como criar sites e configurar pools de aplicativos. Nós começamos a testar o código nas caixas do desenvolvedor e parecia funcionar. Então percebemos que, se o desenvolvedor reconstruísse o aplicativo, ele deixaria de ser executado e o IIS7 nos forneceria essa mensagem de erro (praticamente inútil):

Server Application Unavailable

The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

Se reciclarmos manualmente o pool de aplicativos, o aplicativo será iniciado novamente. Não vemos eventos ou erros no log do aplicativo. O pool está configurado para iniciar e reciclar automaticamente nas alterações de configuração.

Nós tentamos todas as combinações de configuração no pool de aplicativos, no aplicativo e nas configurações do ASP.net. Tentamos executar o pool de aplicativos como contas de usuário diferentes. Tentamos excluir o pool de aplicativos e o aplicativo e recriar manualmente à mão por meio da interface do usuário, e o problema ainda persiste.

É como se o uso da biblioteca Microsoft.Web.Administration envenenasse a máquina para que ela nunca mais reiniciasse automaticamente os pools de aplicativos !!

Gostaríamos de receber conselhos sobre insights ou depuração. Não podemos executar isso em nenhum sistema de produção até entendermos o que causou isso.

    
por Gareth Farrington 26.07.2010 / 18:43

3 respostas

0

Eu encontrei este thread enquanto procurava a mesma descrição de erro. E eu encontrei o que estava causando isso no meu caso.

Eu estava convertendo um aplicativo do .net 3.5 para 4.0 e depois que mudei o pool de aplicativos de 2.0 para 4.0, isso começou. Aconteceu apenas no modo clássico não integrado.

No meu caso, eu tinha manipuladores http curinga no web.config:

<add name="Wildcard .net 64 bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="bitness64"/>    
<add name="Wildcard .net 32 bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="bitness32"/>

Mas eu tinha esquecido de mudar o caminho para o diretório .net

então, depois de alterar \v2.0.50727\aspnet_isapi.dll para \v4.0.30319\aspnet_isapi.dll , o site começou a se comportar normalmente.

Espero que isso ajude alguém.

    
por 17.02.2011 / 17:48
0

Você está chamando Site.Stop () por acaso? Isso altera a propriedade autoStart do site para false, chamando Start () para retornar a true.

Para garantir que não haja outros truques, recomendamos que você copie o arquivo% windir% \ System32 \ Inetsrv \ Config \ ApplicationHost.config para algum diretório de backup, execute o aplicativo de implantação e, em seguida, Diff os arquivos depois disso e ver as diferenças, meu palpite é que você verá algumas propriedades autoStart definidas como false. Se esse for o caso, isso é causado por causa de chamar Stop e nunca chamar Start novamente (antes de CommitChanges)

Verifique se seu código tem um padrão de: Site.Stop () ... faz alterações na memória .... ServerManager.CommitChanges () .... Site.Start ()

Você nunca irá comutar o último Start que o modificou para autoStart

    
por 27.07.2010 / 07:22
0

Não tenho certeza se você já passou por isso, mas não é possível misturar aplicativos .NET 4 e .NET 2 no mesmo pool de aplicativos. Este problema nos mordeu recentemente. Tivemos que criar um novo pool de aplicativos e atribuir o novo aplicativo da web do .NET 4 a esse pool. Todos os aplicativos do .NET 2 residem no outro.

Nesse ponto, tudo ficou feliz e a mensagem que você mencionou foi embora.

    
por 17.02.2011 / 17:53