Configurando Windows 2003 64 bits para executar aplicações .NET 32 bits Web

É possível executar aplicações web compiladas em .NET 32 bits no IIS do Windows 2003 64 bits.

No site da Micrososft encontramos uma página que traz a execução de um script VBS como forma de configurar o IIS.

Contudo somente a execução deste link não surtiu o efeito desejado (pelo menos no caso que presenciei).

Foi necessário realizar algumas etapas a mais, sendo a mais importante, a reconfiguração do suporte .NET para o servidor IIS.

Abaixo segue a sequência que utilizei para configurar o IIS do Windows 2003 64 bits para que executasse uma aplicação NET compilada em 32 bits.

Execução do Script de Configuração do ISS

O script utilizado foi o que encontramos na página da Micrososft. Caso você já tenha o Service Pack 1 do windows 2003 instalado, este script já está presente no seu sistema operacional. Minha forma de executar o script foi a descrita abaixo. Você pode colocar estas linhas em um arquivo de comandos ou mesmo copiar e colar em uma janela de comandos (uma janela DOS aberta Run -> cmd)

%systemdrive%

cd %systemdrive%\Inetpub\AdminScripts

cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true"

pause

Abaixo uma imagem da execução destas linhas de comando :

Certifique-se de que o suporte para a .NET 32 bits está instalado

Obviamente para que possamos executar uma aplicação compilada em 32 bits o ambiente de execução apropriado deve estar disponível. Certifique-se de que você tenha a pasta abaixo em seu PC e que contenha os arquivos típicos da .NET Framework.

%WINDIR%\Microsoft.NET\Framework\v2.0.50727

Caso você não tenha o runtime da versão 32 bits instalado, faça download aqui e instale o runtime.

Reconfigure o IIS para que suporte a .NET 32 bits

Este passo talvez não seja necessário caso a instalação do Win 2003 e do IIS esteja sendo feita pela primeira vez. 

No caso que presenciei foi necessário porque o IIS já estava configurado para executar aplicações em 64 bits. A única forma que encontrei foi desinstalar todo o suporte para a .NET  do IIS e instlar o suporte para a versão 32 bits. 

Note que existem diversas opções de instalação do suporte para .NET, consulte o help do aplicativo de configuração do IIS - aspnet_regiis.exe -  para maiores informações. 

Assim, esta etapa consta de 2 passos :

Removendo todo o suporte de .NET do IIS

Basta executar o comando da imagem abaixo :

Instalando o suporte para .NET 32 bits no IIS 2003 64 bits

Agora basta executar um comando similar, mas que instala o suporte 32 bits no IIS. Verifique o help deste utilitário para outras opções de configuração.

Configurando as Extensões do IIS para a execução em 32 bits

Neste momento temos o runtime 32 bits instalado e o IIS já o reconhece, já sabe que ele também está disponível. Mas ele está desabilitado para o IIS. Caso você tenha o suporte a 64 bits ele ainda ele ainda está configurado como plataforma padrão de execução para as Web Server Extensions.

Os passos que executei foi desabilitar a versão .NET 64 bits e habilitar a de 32 bits. A de 32 bits simples de identificar porque traz o "32" no nome da Extension. A de 64 é justamente a que não traz nenhuma referência que não seja mesmo o nome e número da versão da .NET (2.0) desabilite a de 64 bits e habilite a de 32 bits. 

Confira a imagem abaixo :

Verifique se o Filtro ISAPI associado é o correto (32 bits)

Muito provavelmente o filtro ISAPI já deve estar corretamente configurado e apontando para a DLL correta de 32 bits.

O caminho da DLL de 32 bits é este :

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll

sendo que o da DLL de 64 bits é este:

%WINDIR%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll

A configuração ISAPI pode ser acessada com via o botão direito sobre a pasta Web Sites:

Execute o site 32 bits !

Neste ponto o suporte a 32 bits deverá estar ativo e o seu site 32 bits deveria executar sem erros. Pode ser que você obtenha um erro 404 (uma típica página de erro 404 do browser). Caso isso ocorra experimente reiniciar o serviço do IIS para que ele volte a recarregar com as novas configurações.