Проблемы с подключением к базе данных Progress через ODBC в опубликованном веб-приложении

У меня возникла проблема с попыткой опубликовать и правильно запустить мое веб-приложение на нашем сервере IIS.

Когда я тестирую из Visual Studio 2015 с теми же настройками драйвера ODBC, все работает нормально. Только когда я пытаюсь опубликовать веб-приложение и получить к нему доступ с веб-сервера IIS в браузере, у меня возникают проблемы.

Я использую Visual Studio 2015 v14.0.25431.01, обновление 3.

Сервер IIS представляет собой 64-разрядный сервер Windows 2016.

Драйвер ODBC — это драйвер Progress OpenEdge 11.6 — 32-разрядная версия.

Соединение ODBC настраивается с помощью 32-разрядного диспетчера ODBC, который находится в папке c:\windows\sysWOW64\odbcad32.

Я наткнулся на множество форумов, в которых говорится, что нужно убедиться, что драйвер ODBC настроен правильно и используется правильный менеджер ODBC, которым он и является.

Я также наткнулся на несколько сообщений, в которых упоминается компиляция веб-приложения и указание в диспетчере конфигурации использовать x86 вместо Any CPU. x86 не подходит, когда я захожу в диспетчер конфигурации.

Я не знаю, как устранить эту ошибку, чтобы получить доступ к новым веб-приложениям с сервера IIS.

Ошибка, которую я получаю, это...

Ошибка сервера в приложении '/'

ОШИБКА [IM014] [Microsoft][Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением.

Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.Odbc.OdbcException: ERROR [IM014] [Microsoft][Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением.

Ошибка источника: во время выполнения текущего веб-запроса было создано необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений. Трассировки стека:

[OdbcException (0x80131937): ОШИБКА [IM014] [Microsoft] [Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением] System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) +1358681 Система .Data.Odbc.OdbcConnectionFactory.CreateConnection (параметры DbConnectionOptions, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +78

Есть предложения, советы, рекомендации?


person shadderk    schedule 13.09.2017    source источник


Ответы (1)


Проблема в том, что пытается сказать сообщение об ошибке (может быть, немного неясно):

ОШИБКА [IM014] [Microsoft][Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением.

Это означает, что вы пытаетесь использовать 32-разрядный драйвер ODBC с 64-разрядной версией IIS, и невозможно использовать 32-разрядные драйверы/библиотеки в 64-разрядных приложениях (не только для IIS, но и для любого приложения Windows). ).

У вас нет проблем с VS 2015, потому что это 32-разрядное приложение, поэтому драйвер и приложение совпадают. Вам необходимо установить 64-разрядный драйвер ODBC для IIS и настроить 64-разрядный ODBC.

person Alberto Martinez    schedule 13.09.2017
comment
Спасибо за быстрый ответ. Я не был уверен, смогу ли я использовать 32-битный драйвер на сервере или нет. Я попытаюсь получить правильный 64-битный драйвер и посмотрю, решит ли это все мои проблемы. - person shadderk; 13.09.2017