Provavelmente, porque um ou mais dos componentes usados pelo seu aplicativo são de 32 bits.
Ou porque um ou mais componentes usados pelo seu aplicativo não são encontrados quando você alterna o modo do Pool de Aplicativos, devido à sua densidade e ao redirecionamento do sistema de arquivos.
Em geral, o IIS dividirá Módulos e Manipuladores em binários de 32 e 64 bits e impedirá que um bitness ou outro veja o outro bitness com as condições prévias bitness32 ou bitness64.
Exemplo de destaque:
<modules>
<module name="something" path="c:\program files\something.dll" precondition="bitness64">
</modules>
Se você alterar o pool de aplicativos para 32 bits, lembre-se:
- bitness64 não será verdadeiro
- aplicativos de 64 bits não são encontrados em locais de arquivos; Aplicativos de 32 bits podem ser (Arquivos de Programas (x86) ou System32 (que redireciona para o SysWow64))
o mesmo módulo / manipulador pode ter uma entrada como esta:
<modules>
<module name="something32" path="c:\program files\something32.dll" precondition="bitness32">
</modules>
O qual funcionará apenas se o arquivo algo32.dll estiver em Arquivos de programas (x86).
Os logs de eventos devem ajudá-lo a rastrear qual módulo está sendo problemático, se for um módulo ou falha no carregamento do manipulador.
Se seus módulos ou manipuladores não especificarem uma pré-condição de bitness e puderem usar caminhos diferentes quando executados a partir de um bitness diferente devido ao redirecionamento, você terá seu problema. (os logs de eventos geralmente apontam para o que não foi carregado quando um pool de aplicativos não é iniciado).
Veja também: