IBM.Data.DB2.Core проблемы с подключением - PullRequest
0 голосов
/ 08 января 2019

Я получаю сообщение об ошибке при подключении к DB2. Но только в развернутом приложении (MSI Packaged или Click-Once). (И на той же машине)

Все отлично работает при запуске приложения из Visual Studio 2017. в сборках отладки или выпуска.

Я использую библиотеки от Nuget для версии 1.3.0.100 на Windows 10

Я также использую бесплатную версию сервера для сообщества, недавно установленную для загрузки на win server 2012 r2.

Есть идеи, что происходит? Это явно внутри кода IBM ...

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

Стек ниже:

System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
   at IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
   at IBM.Data.DB2.Core.DB2Connection.Open()
   at FrozenElephant.Symbiotic.DataProviderDB2.DatabaseTypesFactoryDB2.CreateConnection()
   at FormDatabaseConnection.btnTestConnection_Click(Object sender, EventArgs e) 

1 Ответ

0 голосов
/ 11 января 2019

Обобщая выводы, приведенные выше, в форме ответа, так как я не могу вернуться к уточнению моих комментариев некоторое время.

Похоже, что эта проблема является результатом не ошибки кода, а расположения неверного коннектора DB2 на целевой машине или, возможно, в том, как развернуто приложение. Решение о том, кто является виновником, нужно будет сделать, посмотрев, как развертываются распространяемые части соединителя.

Один пользователь сказал, что он "неправильно ссылается на сборки в моем приложении". Это может указывать на несколько возможностей:

  • Для разработки используется другая версия SDK по сравнению с той, что находится на целевой машине
  • Возможно, было смешано несколько различных сборок конфликтующей версии или происхождения
  • Сборки могут потребоваться для развертывания вместе с приложением, и не все. Это можно исправить, установив Copy Local = true для соответствующих сборок.
  • Возможно также, что приложение компилируется для платформы, отличной от установленной на целевом компьютере клиента (скажем, x64 версия x86).

Другой человек упоминает то же самое сообщение об ошибке, возникающее по аналогичной, но немного другой причине. Это говорит: «Кажется, это проблема установки. Некоторые файлы не найдены».

В этом случае вы, вероятно, захотите переустановить клиент или диагностировать установку другим способом. Во второй ссылке выше упоминается инструмент testconn20 , который может быть доступен на установленном вами клиенте. Ваша строка подключения также может содержать некоторые подсказки; если в нем есть что-то, что может зависеть от конкретного установленного вами клиента или его возможностей, это будет другое место для проверки.

Edit:

В соответствии с моим комментарием ниже, вам может не хватать некоторых файлов или папок из развертывания ClickOnce. Если вы определили, что папка clidriver, в которой есть файлы, связанные с DB2, необходима для правильной работы приложения, необходимо проверить действие сборки, скопировать в выходной каталог и параметры файлов приложения ClickOnce. Последний может быть ключевым. Чтобы проверить это, перейдите в Публикация в свойствах проекта:

Location of ClickOnce application files settings

Тогда вам может потребоваться установить флажок «Показать все файлы», чтобы подтвердить состояние каждого файла в развертывании:

Application files settings example

...