por Ivanov Cepeda / Roberto Cavalcanti

Há poucos dias, começamos a notar um sintoma novo surgindo com mais freqüência em servidores que executam o IIS 6. Seguem os detalhes dos sintomas:

Você está executando o Windows 2003 Server e instalou o IIS 6.0 para hospedar seus sites. O sistema operacional alerta que você deve instalar a atualização KB 973917.

  • Os Application Pools ou os web sites não reiniciam.
  • Os web sites de IIS poderão não ser iniciados.
  • A proteção habilitada pela opção "Rapid Fail Protection" pode desabilitar os Application Pools

O que está acontecendo?

Nem todas as instalações de IIS em execução em um Windows 2003 Server são afetados por esta atualização. Você pode instalar essa atualização e continuar usando normalmente o IIS 6.0. O único caso em que esse erro pode ocorrer é o seguinte:

Você Instalou o Windows 2003, mas não instalou o IIS 6.0 durante a instalação inicial o sistema operacional. Posteriormente você instala o Service Pack 1 ou o Service Pack 2 do Windows 2003 e depois de instalar com êxito todos os service packs , você decidiu instalar o IIS 6.0. Ao instalar o IIS 6.0 foram solicitadas que os discos originais do sistema operacional (não os discos do Service Pack 1 ou do Service Pack 2).

Se você seguiu o cenário descrito acima, poderá terminar com o que é chamado de um "Binary mismatch" ou uma incompatibilidade de bibliotecas entre as bibliotecas do sistema operacional e as bibliotecas pertencentes ao IIS. Em outras palavras os arquivos do sistema operacional Windows 2003 pertencem a SP-2 versões enquanto IIS 6.0 arquivos pertencem ao SP1 ou RTM versões de sistema operacional.

Como você pode verificar se você se enquadra nesse cenário?

Em uma janela de comando do Windows 2003, execute o seguinte comando:

C:\>winver

Isto irá mostrar a versão do Windows 2003 que você está executando e qual o nível de atualizações. Você deverá ver que o sistema operacional está atualizado para a versão do Service Pack 2. Se não, você deve considerar seriamente o upgrade para o Service Pack 2, já que o Service Pack 1 já não é mais suportado.

Se você estiver executando a versão do Windows 2003 com o Service Pack 2 instalado, verifique a versão de um dos arquivos do IIS 6.0. Uma biblioteca fácil de localizar é a iisutil.dll, que está localizada no diretório % windir%\system32\inetsrv. Depois de você ter encontrado na biblioteca prossiga para exibir as propriedades de arquivo para exibir as informações da versão do arquivo. Se você tiver uma versão contendo um 0 após o último ponto decimal ou uma versão com um número menor que3000 depois do último ponto decimal, você tem um "Binary mismatch". A versão atual do arquivo deve ser a seguinte:

6.0.3790.3959

Este problema deve ocorrer?

A última atualização que vem no KB 973917 traz uma nova versão da biblioteca w3core.dll. Esta nova versão do arquivo tenta chamar uma API em iisutil.dll. Essa API que está sendo invocada se encontra apenas em iisutil.dll que é instalada no Service Pack 2 do Windows 2003. Se você instalou o IIS 6.0 no Windows 2003 com o Service Pack 2 já instalado, é possível que você caia neste problema.

Solução:

Se você estiver nessa situação, e só depois de confirmar os sintomas conforme observado neste artigo, você deve reinstalar Service Pack 2 do Windows 2003 Server que pode ser encontrado no seguinte link:

http://www.Microsoft.com/downloads/details.aspx?FamilyId=95AC1610-C232-4644-B828-C55EEC605D55&displaylang=en

Não é necessário desinstalar e reinstalar o Windows 2003 Service Pack 2. Apenas reinstale o Service Pack 2 e assim será instalada a versão apropriada da biblioteca iisutil.dll que eliminará o problema.