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

netcoreapp3.1 Azure Function以docker镜像运行时调用SqlClient抛出平台不支持异常

问题根因

该报错本质是Docker容器内的Linux运行环境缺少Microsoft.Data.SqlClient依赖的原生运行库,本地直接运行时依托Windows系统自带的对应原生依赖,因此不会触发异常。此前安装System.Data.SqlClient的操作无效,因为.NET Core 3.1场景下EF Core、Dapper默认调用的是Microsoft.Data.SqlClient的实现,旧版System.Data.SqlClient已停止跨平台场景的维护。

可行解决方案

按以下步骤操作即可修复:

  • 卸载项目中所有已安装的System.Data.SqlClient Nuget包
  • 统一安装Microsoft.Data.SqlClient 2.1.x版本,不要使用3.x及以上版本,3.x版本对.NET Core 3.1的Linux环境存在已知兼容问题,2.1.x是适配该场景的LTS版本
  • 修改Dockerfile,在基础镜像声明后、拷贝发布文件的步骤前,添加原生依赖安装逻辑,示例代码如下:
# 基于默认Azure Function .NET Core 3.1 Debian系基础镜像的依赖安装命令
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        libc6-dev \
        libgssapi-krb5-2 \
        libssl1.1 \
        libstdc++6 \
        zlib1g \
    && rm -rf /var/lib/apt/lists/*

如果使用Alpine系基础镜像,将上述命令替换为apk对应的依赖安装命令即可。

  • (可选)如果数据库连接字符串未配置加密,可添加Encrypt=false参数,避免Linux环境下无有效证书触发的连接报错
验证方法

清理本地Nuget缓存后重新还原项目,重新构建Docker镜像运行,调用CRUD接口即可验证修复效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:54:03