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

使用Azure Functions Core Tools本地运行耐久Azure函数出现EF Core报错

问题原因

这个错误的本质是Azure Functions Core Tools v4 运行时程序集与项目依赖的EF Core版本不兼容,和你代码里的ToDictionary逻辑无关,错误抛出在EF Core内部初始化阶段,还没有执行到读取数据库结果转换字典的步骤:

  • EF Core的EnumerableMethods静态构造函数会反射扫描System.Linq程序集获取标准查询运算符的方法定义
  • Azure Functions Core Tools v4默认加载.NET 6及以上版本的基础类库,其中System.Linq的方法重载和EF Core 3.1.x版本扫描预期的重载不匹配,导致反射调用Single方法时找到多个符合条件的结果,抛出对应异常
  • Visual Studio调试时会优先使用项目指定的.NET Core 3.1运行时和对应版本的基础类库,所以不会触发冲突
解决方案
  1. 强制指定Core Tools使用.NET Core 3.1对应的函数运行时版本
    在项目的local.settings.json的Values节点下添加配置:
"FUNCTIONS_WORKER_RUNTIME_VERSION": "~3"

重启函数服务即可,如果启动时提示找不到对应运行时,可以通过Core Tools安装v3版本的运行时组件。

  1. 显式开启绑定重定向
    在你的函数项目.csproj文件的<PropertyGroup>节点下添加如下配置,解决程序集版本冲突:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

重新编译项目后再执行func start启动。

  1. 降级Azure Functions Core Tools到v3版本
    如果上面的方案都不生效,可以直接卸载v4版本的Core Tools,安装匹配.NET Core 3.1的v3版本Core Tools,从根源避免运行时不兼容问题。

内容的提问来源于stack exchange,提问作者Michal B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:06:07