c# - 在 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 客户端。有人可以帮忙吗?
解决方案
推荐阅读
- java - Jackson Deserializer 在失败时默认为 null
- ldap - 将主机 ldap 服务器连接到本地 VM
- reference - (Anylogic)如何从另一个代理引用 Main
- python - Discord bot 在语音聊天中断开随机用户的连接
- mapping - 从括号切换到 Visual Studio Code
- c# - OnTriggerEnter2D 仅在 Unity 中触发它的对象上更改 int
- python - Selenium 页面源
- c++ - extern "C" 是将 C 代码转换为 C++ 代码,还是只允许编译器将 C 代码编译为 C++ 代码?
- r - geom_smooth 没有回归线
- excel - 在 TEXTJOIN 函数中崩溃 VBA 代码和不需要的“@”符号