Как скомпилировать сайт для использования 32-битного клиента Oracle в 64-битной Windows - PullRequest
2 голосов
/ 10 ноября 2009

Я получил эту ошибку после обновления до 64-разрядной версии Windows 7 и запуска существующего веб-сайта .NET.

[InvalidOperationException: попытка загрузить клиентские библиотеки Oracle вызвала BadImageFormatException. Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle.]

Я только установил установленный 32-битный клиент Oracle, и я понимаю, что на моей 64-битной машине разработки приложение ожидает 64-битные библиотеки, если явно не указано иное. Это из моих поисков.

Я прочитал, что могу изменить Платформу решений на x86, которая будет указывать приложению использовать 32-битную версию, если это то, что он находит. Я хотел бы сделать это, но в решении Visual Studio нет опции x86 для веб-сайта.

Я создал тестовое приложение, и у меня есть опция, я создал тестовый веб-сайт, но этого не произошло. Как мне скомпилировать сайт для x86, чтобы он использовал 32-битный клиент Oracle.

Приветствия

1 Ответ

6 голосов
/ 10 ноября 2009

В IIS Manager создайте пул приложений и настройте этот пул приложений для работы в 32-разрядном режиме. Затем назначьте свой веб-сайт с помощью 32-разрядного клиента Oracle для запуска в этом 32-разрядном пуле приложений.

Поскольку рабочий процесс, который IIS запускает для этого пула приложений, является 32-разрядным процессом, при попытке загрузить CLR он загрузит 32-разрядный CLR и, следовательно, загрузит сборку в 32-разрядном режиме. Это верно, даже если ваша сборка была скомпилирована для 64-битного и 32-битного режимов. Ваша сборка, работающая в 32-битном режиме, может затем вызвать Oracle Client, работающий в 32-битном режиме.

...