Como compilar um site para usar 32 bits Oracle Client em Windows de 64 bits
-
19-09-2019 - |
Pergunta
Eu recebi este erro após a atualização para o Windows 7 de 64 bits e, em seguida, executar um .NET Web site existente.
[InvalidOperationException: Tentativa de carregar bibliotecas de cliente Oracle jogou BadImageFormatException. Este problema irá ocorrer quando executado no modo de 64 bits com os componentes de cliente Oracle de 32 bits instalado.]
Eu só ter instalado a 32-bit Oracle Client instalado e eu entendo que em minha máquina de desenvolvimento de 64 bits do aplicativo está esperando bibliotecas de 64 bits a menos que explicitamente declarado. Esta é a partir da busca que tenho feito até agora.
Eu li que eu posso mudar o Platform Solution para x86, que irá instruir o aplicativo para usar 32-bit se é isso que ele encontra. Eu gostaria de fazer isso, mas não há nenhuma opção x86 para o site na solução Visual Studio.
Eu criei o aplicativo de teste um e eu tenho a opção, eu criei um site de teste e isso não aconteceu. Como posso compilar um site para x86 para que ele irá usar o Oracle Client de 32 bits.
Felicidades
Solução
No Gerenciador do IIS, criar um pool de aplicativos e conjunto que pool de aplicativos para executar no modo de 32 bits. Em seguida, atribuir o seu site usando 32-bit Oracle Client para executar em que pool de aplicativos de 32 bits.
Uma vez que o processo de trabalho que o IIS é iniciado para esse pool de aplicativos é um processo de 32 bits, quando ele tenta carregar o CLR ele irá carregar o CLR de 32 bits e, portanto, irá carregar a sua montagem no modo de 32 bits. Isto é verdadeiro mesmo se a sua montagem foi compilado para os modos de 64 bits e 32 bits. Sua montagem em execução no modo de 32 bits pode então chamar o Oracle Client em execução no modo de 32 bits.