代码之家  ›  专栏  ›  技术社区  ›  Eric Schneider

IBM.Data.DB2.Core连接问题

  •  0
  • Eric Schneider  · 技术社区  · 6 年前

    在连接到DB2时,我一直遇到一个错误。但仅在已部署(msi打包或单击一次)应用程序上。(在同一台机器上)

    我在Windows10上使用nuget版本1.3.0.100的libs

    我知道这没什么好做的,但希望有人以前遇到过这个问题。

    堆栈如下:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Dominic P    6 年前

    以答案的形式总结上述发现,因为我可能有一段时间不会再详细阐述我的评论了。

    这个问题似乎不是由代码错误造成的,而是由于目标机器上DB2连接器的配置失败,或者可能是由于应用程序的部署方式。需要通过查看连接器的可再分发部分是如何部署的来确定谁是罪魁祸首。

    One user 说他“在我的应用程序中没有正确引用程序集”。这可能表明的几种可能性包括:

    • 开发时使用的SDK版本与目标机器上的不同
    • 这些程序集可能需要与应用程序一起部署,但并非所有程序集都需要部署。可以通过为相关程序集设置Copy Local=true来修复此问题。
    • 也可能是应用程序的编译平台与目标计算机上安装的客户端不同(比如x64版本x86)。

    Another person

    在这种情况下,您可能需要重新安装客户端或以另一种方式诊断安装。上面的第二个链接提到了一个工具, testconn20

    编辑:

    根据我下面的评论,您可能缺少ClickOnce部署中的一些文件或文件夹。如果您确定clidriver文件夹(其中包含DB2相关文件)是应用程序正常运行所必需的,那么您应该检查构建操作,复制到输出目录,然后单击一次应用程序文件设置。最后一个可能是关键。若要进行检查,请转到“项目属性”中的“发布”:

    Location of ClickOnce application files settings

    然后,您可能需要选中“显示所有文件”以确认部署中每个文件的状态:

    Application files settings example

        2
  •  0
  •   Eng.Fouad    5 年前

    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