连接到DB2时,我总是收到错误消息。但仅适用于已部署(msi打包或单击一次)的应用程序。 (并且在同一台计算机上)
在Visual Studio 2017中运行应用程序时,无论是调试版本还是发行版,一切都完美运行。
我正在Windows 10上使用nuget的1.3.0.100版
我还使用了服务器的免费社区版本,这是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)
答案 0 :(得分:1)
以答案的形式总结以上发现,因为我可能有一段时间不会再详细阐述我的评论了。
看来,此问题不是由代码错误引起的,而是由DB2连接器在失败的目标机器上的配置或者可能是应用程序的部署方式导致的。通过查看连接器的可重新分发部分的部署方式,可以确定是哪一个罪魁祸首。
One user说,他“未在我的应用程序中正确引用程序集”。这可能表明一些可能性,包括:
Another person提到了由相似但略有不同的原因引起的相同错误消息。这个人说:“这似乎是安装问题。找不到某些文件。”
在这种情况下,您可能正在考虑重新安装客户端或以其他方式诊断安装。上面的第二个链接提到了 testconn20 工具,该工具可能在已安装的客户端中可用。您的连接字符串可能还会提供一些提示。如果其中有任何内容可能取决于您所安装的特定客户端或其功能,那将是另一个要检查的地方。
编辑:
根据我在下面的评论,您可能缺少ClickOnce部署中的某些文件或文件夹。如果确定要使应用程序正常运行,必须具有其中包含DB2相关文件的clidriver文件夹,则应检查生成操作,复制到输出目录以及ClickOnce应用程序文件设置。最后一个可能是关键。要进行检查,请转到项目属性中的“发布”:
然后,您可能需要检查“显示所有文件”以确认部署中每个文件的状态:
答案 1 :(得分:0)
我有完全相同的问题。我通过将目录clidriver
放在工作目录中来解决了该问题。另外,我设置了以下环境变量:
#!/bin/bash
cd /opt/app/deployments/v1.0
export DB2_CLI_DRIVER_INSTALL_PATH="/opt/app/deployments/v1.0/clidriver"
export LD_LIBRARY_PATH="/opt/app/deployments/v1.0/clidriver/lib"
export PATH=$PATH:"/opt/app/deployments/v1.0/clidriver/bin:/opt/app/deployments/v1.0/clidriver/adm:/opt/app/deployments/v1.0/clidriver/lib"
export ASPNETCORE_URLS=http://+:5000
export ASPNETCORE_ENVIRONMENT=STAGING
export ASPNETCORE_INSTANCENAME=app01
/opt/app/runtime/aspnetcore-runtime-3.0.0-linux-x64/dotnet /opt/app/deployments/v1.0/Launcher.dll