System.data.OracleClient с 32-разрядным драйвером клиента Oracle на 7-разрядной операционной системе.
У меня есть веб-приложение, мигрирующее с asp.net 1.1 (VS 2003) на Asp.net 2 ( VS 2008). У меня проблема с выполнением соединения Oracle в новой версии. Среда разработки - 64-битная семерка. Когда создается приложение со всеми процессорами, у меня возникает проблема с System.Data.OracleClient, исключение System.BadImageFormatException: неверный формат программы предварительного разряда программы. (Исключение составляет HRESULT: 0x8007000B)., Я генерирую на процессоре x86, и у меня есть эта ошибка при запуске:
[BadImageFormatException: Невозможно выполнить сборку или сборку "CpimWebApplication" или отменить зависимости. Неправильный формат предварительной оплаты программы.]
System.Reflection.Assembly._nLoad (имя_файла_сборки, кодовая база строки, сборка доказательствБезопасность, расположение сборки Hint, StackCrawlMark& stackMark, логическое значение throwOnFileNotFound, логическое значение для внутренней проверки) +0
System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence AssemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +416
System.Reflection.Assembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +166 System.Reflection.Assembly.Load (String assemblyString) +35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +190
В чем проблема? Клиент Oracle на компьютере имеет 32-битную версию. Я читал в Интернете, что невозможно использовать System.data.OracleClient с клиентом Oracle 32 bit? Установленный 64-битный клиент Oracle является решением? TIA С уважением
2 ответа
Если вы работаете с приложением в 64-битном режиме, вы не можете использовать 32-битный драйвер Oracle.
Вам нужно либо установить 64-битный драйвер Oracle и запустить приложение в 64-битном режиме,
или же
установить приложение для запуска в 32-битном режиме. Вы можете сделать это в IIS, выбрав пул приложений, перейдите в раздел "Дополнительные параметры" и установите для "Включить 32-разрядные приложения" значение true.
ГТГ прав.
Однако System.Data.OracleClient устарела. Microsoft больше не поддерживает это.
Поэтому я бы порекомендовал вам использовать поставщик данных Oracle для.Net: ODP.Net.
Вы можете скачать его с:
Клиент Oracle Database 11g Release 2 (11.2.0.1.0) для Microsoft Windows (32-разрядная версия) Клиент Oracle Database 11g Release 2 (11.2.0.1.0) для Microsoft Windows (x64)
Для разработки (Win7 64-bit) используйте 32-битную версию. Я пробовал 64-битный клиент Oracle безуспешно. Для производства (Wind2008R2 64-bit) используйте 64-битную версию. Обратите внимание, что они должны быть одной версии (11.2.1.0).
Кроме того, убедитесь, что вы скомпилировали свое приложение для "Любого ЦП", добавив ссылку на Oracle.DataAccess, установив "Определенная версия" в "Истина" и "Локальная копия" в "Ложь". Таким образом, при развертывании вашего приложения в производственной среде оно будет искать ту же версию (11.2.1.0, 64-разрядный эквивалент) из GAC.