ASP.NET Core 6.0连接Informix数据库遇System.Security.Permissions加载异常
ASP.NET Core 6 Web API连接Informix数据库时System.Security.Permissions程序集加载失败问题
问题详情
- 运行环境:Windows 11 64位、Informix 4.50.FC11 CSDK、ASP.NET Core 6 Web API
- 已完成操作:
- 安装Informix 4.50.FC11 CSDK
- 将
C:\Program Files\Informix.4.50.FC11\bin添加至系统PATH环境变量 - 通过setnet32配置Informix服务器与主机信息
- 安装NuGet包
System.Security.Permissions(4.4版本)
- 连接代码:
string _connectionString = "Host=<IPADDRESS>;Service=<PortNumber>;Protocol=onsoctcp;Server=<DBServer Name>;Database=<DBNAME>;User Id=<UID>;Password=<PASSWORD>;DB_LOCALE=en_US.819;CLIENT_LOCALE=en_US.819;"; con = new Informix.Net.Core.IfxConnection(_connectionString); // 此处抛出异常 await con.OpenAsync(); IfxCommand cmd = new IfxCommand("mySPName", con); cmd.CommandType = CommandType.StoredProcedure; IfxDataAdapter ifxAdpter = new IfxDataAdapter(cmd); System.Data.DataSet ifxDS = new System.Data.DataSet(); ifxAdpter.Fill(ifxDS, "emp");
- 报错信息:
FileNotFoundException: 无法加载文件或程序集“System.Security.Permissions, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”。系统找不到指定的文件。
解决方案
1. 添加程序集绑定重定向
让.NET Core运行时用已安装的高版本程序集替代驱动依赖的旧版本:
- 方式一:修改项目的
runtimeconfig.json文件,添加以下配置:
{ "runtimeOptions": { "assemblyBinding": { "dependencies": { "System.Security.Permissions": { "assemblyVersion": "4.0.3.0", "publicKeyToken": "cc7b13ffcd2ddd51", "redirectTo": "4.4.0.0" } } } } }
- 方式二:在项目的
.csproj文件中添加配置项:
<ItemGroup> <RuntimeHostConfigurationOption Include="assemblyBinding.redirects.System.Security.Permissions" Value="4.0.3.0-4.4.0.0" /> </ItemGroup>
2. 更换为.NET Core兼容的Informix驱动
手动引用的Informix.Net.Core.dll可能是针对.NET Framework开发的,在.NET Core环境下兼容性不佳。建议卸载该dll,通过NuGet安装官方的.NET Core兼容驱动IBM.Data.Informix.Core,用它实现数据库连接。
3. 检查程序集复制情况
确认System.Security.Permissions.dll是否被正确复制到Web API的输出目录(bin/Debug/net6.0/)。如果没有,打开NuGet包管理器,找到System.Security.Permissions包,右键选择“属性”,将“复制本地”设置为“True”。
4. 安装匹配版本的System.Security.Permissions包
报错中要求的4.0.3.0程序集版本对应NuGet包版本为4.7.0。可以卸载当前的4.4版本,安装4.7.0版本的System.Security.Permissions包,让驱动找到匹配的程序集。
内容的提问来源于stack exchange,提问作者SoftwareDveloper
相关产品推荐
相关产品推荐

