System.data.OracleClient с 32-разрядным драйвером клиента Oracle на 7-разрядной операционной системе - PullRequest
1 голос
/ 08 декабря 2011

У меня есть веб-приложение, мигрирующее с 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 (AssemblyName fileName, String codeBase, Свидетельство сборкиБезопасность, Место сборкиСовет, StackCrawlMark & ​​stackMark, Boolean throwOnFileNotFound, Boolean для самоанализа) + 0
System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Сбор доказательствБезопасность, StackCrawlMark & ​​stackMark, Boolean для самоанализа) + 416
System.Reflection.Assembly.InternalLoad (String assemblyString, Сбор доказательствБезопасность, 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 с 32-разрядным клиентом Oracle? Установленный 64-битный клиент Oracle является решением? ТИА С уважением

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Если вы запускаете приложение в 64-битном режиме, вы не можете использовать 32-битный драйвер Oracle.

Вам нужно либо установить 64-битный драйвер Oracle и запустить приложение в 64-битном режиме,

или

установить приложение для запуска в 32-битном режиме. Это можно сделать в IIS, выбрав пул приложений, перейдите в раздел «Дополнительные настройки» и установите для «Включить 32-разрядные приложения» значение true.

0 голосов
/ 17 декабря 2011

GTG верен.

Однако 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.

...