You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:45:13