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

Azure Function加载System.Configuration.ConfigurationManager报错

问题现象

项目运行环境为 .NET Core 3.1,项目引用了 System.Runtime.Caching 库,该库依赖 System.Configuration.ConfigurationManager。运行时出现差异表现:

  • 同为.NET Core 3.1框架的MS单元测试项目中,相关代码运行正常
  • 同框架版本的Azure Function项目运行时抛出如下异常:

未能加载文件或程序集“System.Configuration.ConfigurationManager, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”。系统找不到指定的文件。

经排查,项目的 .deps.json 文件中已存在对应依赖配置,相关依赖配置截图、堆栈追踪信息见对应附图。

根因说明

Azure Function 宿主默认采用独立的运行时程序集加载策略,会优先从运行时自带的全局存储中加载系统类库,不会默认探测项目输出目录下的高版本系统程序集;单元测试项目走标准.NET Core 控制台的程序集探测逻辑,可正常加载输出目录下的对应依赖,因此出现单测正常、Function运行报错的差异。
该问题的核心触发点是项目传递依赖拉取了6.0.0版本的System.Configuration.ConfigurationManager,该版本不属于.NET Core 3.1运行时的默认自带库版本,且未被显式纳入Function的部署输出文件列表,导致加载失败。

修复方案

按优先级从高到低可选择以下方案:

  • 显式安装对应版本NuGet包
    直接在Azure Function项目中手动安装System.Configuration.ConfigurationManager 6.0.0版本,不依赖传递引入的依赖,重新编译发布后确认输出目录存在对应版本的System.Configuration.ConfigurationManager.dll即可。
  • 修改项目配置保留输出依赖
    右键编辑Azure Function项目的.csproj文件,在顶层<PropertyGroup>节点中添加如下配置,关闭Function构建时的依赖清理逻辑,确保所有传递依赖都被复制到输出目录:
    <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
    
  • 对齐依赖版本到运行时基线
    将System.Runtime.Caching及关联的System.Configuration.ConfigurationManager降级到适配.NET Core 3.1的4.x稳定版本,和Azure Function运行时自带的系统库版本对齐,从根源上消除高版本依赖加载需求。

内容的提问来源于stack exchange,提问作者time_flies

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:54:12