Поставщик lcpi ibprovider 3 не зарегистрирован на локальном компьютере
Чтобы решить эту проблему, я изменил свойство сборки проекта на X86, чтобы он строился в 32-битном режиме и перестраивал проект на 32-битной машине. Но тот же проект использует другие драйверы БД (DB2, SQL и т. Д.) Для подключения к другим базам данных. Поэтому, когда я снова развернул свое приложение в 64-битной ОС, оно выдает исключение «Попытка загрузить 64-битную сборку на 32-битной платформе».
Я использую драйвер Microsoft.Jet.OLEDB.4.0 для чтения и записи в Excel (.xls)
У меня такая же проблема
Я применил ответ neo , но он не работал, пока я не изменил поставщика на «Provider = Microsoft.ACE.OLEDB.12.0;» в строке подключения.
Надеюсь, это поможет, если кто-то столкнется с той же проблемой.
Я знаю, что это довольно старые вопросы, и многие люди уже ответили на них. но я резюмирую вещи для понимания:
Если расширение файла - xls, а ОС - 32-битная, тогда можно использовать только " Microsoft.Jet.OLEDB.4.0 ". Microsoft не выпустила 64-битную версию этого драйвера.
Если расширение файла - xlsx или ОС - 64-битная, вам необходимо использовать " Microsoft.ACE.OLEDB.12.0 ". Приложение, скомпилированное в 32/64 битном режиме, не влияет на выбор драйвера.
Всегда устанавливайте 64-битный драйвер Microsoft.ACE.OLEDB.12.0 в 64-битной ОС. Если вы уже установили 32-битный Office, вам необходимо запустить драйвер из cmd с аргументом / passive. Этот взлом работает только до Office 2013, Microsoft прекратила этот обходной путь из Office 2016 для драйверов Microsoft.ACE.OLEDB.16.0.
Если приложение скомпилировано с флагом AnyCPU, оно будет искать 64-битные драйверы доступа в 64-битной ОС и 32-битные драйверы доступа в 32-битной ОС.
Если ваше приложение работает на localIIS, вы можете решить эту проблему, включив 32-разрядные приложения в дополнительных настройках AppPool.
1.-Откройте IIS
2.-Измените пул приложений на Расширенные настройки
3.-true для включения 32-разрядного приложения.
Ps. Я изменил Configuration Manager на X86 на платформе Active Solution
Я была такая же проблема. Я изменил конфигурацию приложения на x86 , и все заработало!
Я только что изменил свое свойство проекта на формат x64
Проект ---> Свойства ---> Сборка ---> Целевая платформа ---> X64
Мы столкнулись с этой проблемой в настольном приложении.
Это было решено путем изменения целевой платформы на X86 с любого процессора. Свойства проекта >> Сборка >> Целевая платформа.
Я сделал следующее, и проблема исчезла:
Сменил моего провайдера на Microsoft.ACE.OLEDB.12.0
Готово! Это устанавливает стартовые флаги для вашей программы, чтобы она запускалась в 32-битном режиме WOW64 и, следовательно, могла получить доступ к microsoft.jet.oledb.4.0.
Измените расширенные настройки пула приложений IIS Settings. Включить 32-битное приложение.
Просто измените свойство в зависимости от вашей машины, и все готово :-)
Проект ---> Свойства ---> Сборка ---> Целевая платформа ---> X64
Проект ---> Свойства ---> Сборка ---> Целевая платформа ---> X86
Я изменил строку подключения с
Var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ; Persist Security Info = True; Jet OLEDB: Database Password =;", gisdbPath);
Var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Data Source = ; user password =;", gisdbPath);
Это работает, потому что я никогда не просил зарегистрировать Microsoft.Jet.OLEDB.4.0.
64-разрядной версии Jet действительно нет - и (по всей видимости) не планируется ее выпускать.
- но я понятия не имею, как это будет работать, если вам нужно вернуться к Jet для ваших 32-битных приложений.
Однако вы можете переключить проект на 32-разрядную версию в экспресс-версии (я не пробовал и больше не установил 2008 в каком-либо варианте)
Может быть, пришло время полностью отказаться от баз данных Access, прикусить пулю и вместо этого перейти на SQL-сервер?
Я использую VS2013 для Winforms, у меня сработало приведенное ниже решение.
Затем установите VS Target Platform на x86.
В более старых версиях IIS вы не найдете Advance Settings , поэтому для включения Enable 32-bit Applications вам необходимо выполнить следующие команды:
cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs НАБОР W3SVC / AppPools / Enable32bitAppOnWin64 1
Я получал такое же исключение при запуске «SQL Server 2014 Import and Export Data (64-bit)» на моей Windows 8.1.
Чтобы решить эту проблему, я сделал следующее
запустил SQL Server 2014 Import and Export Data (32-bit) вместо 64-bit , и это работает для меня. Я не менял никаких настроек IIS и не устанавливал никакого дополнительного программного обеспечения.
Я знаю, что эта проблема возникает у меня снова и снова, когда я развертываю свое приложение на новом сервере, потому что я использую этот драйвер для подключения к файлу Excel. Вот что я делаю в последнее время.
Этот ниже отлично работает на моей машине разработчика, но на сервере выдает ошибку даже после установки последних драйверов ODBC, что, я думаю, является проблемой, но я решил ее так.
Я заменяю новым поставщиком, как показано ниже:
Но пока я это делаю, вы должны заметить одну вещь. При использовании расширения файла .xlsx и версии Excel 12.0.
Возможно, есть другой процесс, который тем временем открыл файл, и все, что мне нужно сделать, это перезапустить, и все начнется без сбоев, как и ожидалось.
Перейдите в Пуск-> Выполнить и введите cmd, это запустит командную строку (также доступна из Пуск-> Программы-> Стандартные-> Командная строка)
Введите cd .. и нажмите return type cd .. и снова нажмите return (продолжайте делать это, пока не появится подсказка:>)
Теперь вам нужно перейти в специальную папку, которая может быть c: \ windows \ system32, или это может быть c: \ winnt \ system32, или это может быть c: \ windows \ sysWOW64, попробуйте ввести каждый из них, например, cd c: \ windows \ sysWOW64 (если он говорит, что система не может найти указанный путь, попробуйте следующий) cd c: \ windows \ system32 cd c: \ winnt \ system32, если один из них не вызывает ошибки, остановитесь, вы нашли правильная папка.
Теперь вам нужно зарегистрировать библиотеки DLL OLE DB 4.0, набирая эти команды и нажимая клавишу возврата после каждого
Regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
Для Jet не существует 64-битного провайдера. Если вы хотите поддерживать несколько источников БД, включая Jet to Excel, вам понадобится хотя бы эта часть вашего приложения для работы в 32-битном процессе.
Ошибка, возникающая при компиляции для x86, немного странная. Я не понимаю, как в этом случае вы будете ссылаться на 64-битные сборки.
Читайте также: