首页 > 解决方案 > 在 docker 容器中使用 C# 访问 informix

问题描述

我正在迁移一个访问 Informix 数据库的 NET 应用程序,以便它可以在 Docker 容器中运行。我已经完成了 POC,当我在本地计算机上运行它时,它可以正常工作。但是当我想在容器中运行相同的应用程序时,会抛出异常:

Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'db2app.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at IBM.Data.DB2.UnsafeNativeMethods.DB232.SQLFreeConnAttribsADONET(DB2SQLGetConnAttribsADONETParams& pParam)
   at IBM.Data.DB2.ConnSettingsFromXmlConfig.Dispose(Boolean disposing)
   at IBM.Data.DB2.ConnSettingsFromXmlConfig.Dispose()
   at IBM.Data.DB2.DB2ConnPool.ReplaceConnectionStringParms(DB2Connection 
connection, String szValue, DB2ConnSettings& pSettings, 
DB2ConnSettingsInternal& pSettingsInternal, Boolean bAttach, Boolean 
pushDownStrAppended)
at IBM.Data.DB2.DB2Connection.set_ConnectionString(String value)
at IBM.Data.DB2.DB2Connection..ctor(String connectionString)
at ConsoleInformix.Program.Main(String[] args) in 

容器基于镜像:microsoft/aspnet:4.7.2-windowsservercore-1803

要迁移的主要应用程序是 Web API 项目 (.NET Framework 4.7.2)

检查 IBM.DataDB2 的 NuGet 包警告:“注意 - 此包需要 IBM DB2 客户端软件在本地安装并在您的 %PATH% 环境变量中可用”

但是我还没有设法解决如何在容器中执行无人值守或静默安装 IBM 客户端。有人可以帮忙吗?

标签: c#dockerdb2informix

解决方案


推荐阅读