Azure 函数 - 此平台不支持 System.Data.SqlClient

Posted

技术标签:

【中文标题】Azure 函数 - 此平台不支持 System.Data.SqlClient【英文标题】:Azure Function - System.Data.SqlClient is not supported on this platform 【发布时间】:2019-05-25 22:01:34 【问题描述】:

我正在将我的 azure 函数中的以下 insert 代码运行到 azure sql server 2014 数据库中:

    private static void Command(SqlConnection sqlConnection, string query)
    
        var sqlCommand = new SqlCommand(query, sqlConnection);

        try
        
            sqlConnection.Open();
            sqlCommand.ExecuteNonQuery();
        
        finally
        
            sqlConnection?.Close();
        
    

并得到以下异常:

此平台不支持System.Data.SqlClient

这是它使用的依赖链:

如何从我的应用程序运行简单的 sql 命令?我做错了什么?

【问题讨论】:

在 Windows Server 2016、.NET Core 2.1.6 的生产环境中,我遇到了同样的问题。我没有直接引用 System.Data.SqlClient v4.6.0 的 nuget 包。所以我不知道它是如何更新的,也不知道如何删除或恢复它...... 【参考方案1】:

如果您不需要最新的稳定版本 4.6.0,只需恢复为 4.5.1 即可。

否则解决方法是自行加载程序集。右键Function项目和Edit <FunctionAppName>.csproj,在下面添加项,将相关程序集复制到输出目录。

  <!-- For publish -->
  <ItemGroup>
    <None Include="$(USERPROFILE)\.nuget\packages\system.data.sqlclient\4.6.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <!-- For local debug -->
  <Target Name="CopyToBin" BeforeTargets="Build">
    <Copy SourceFiles="$(USERPROFILE)\.nuget\packages\system.data.sqlclient\4.6.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll" DestinationFolder="$(OutputPath)\bin" />
  </Target>

有一个issue 跟踪此程序集引用问题。

【讨论】:

我尝试使用 4.8 仍然会抛出相同的异常,但 4.5.1 工作正常 Mac 上的 VS - 这可行,但您需要将反斜杠更改为斜杠。【参考方案2】:

我已将 System.Data.SqlClient 降级到 4.6.0 然后它对我有用

【讨论】:

还必须添加对函数应用项目 csproj 的 nuget 包引用。 乔伊,你是什么意思?【参考方案3】:

我刚刚遇到了一个 Azure Functions 实例,该实例以某种方式配置为使用 .NET Core 3.0.0。我将配置设置 FUNCTIONS_EXTENSION_VERSIONbeta 更改为 ~2。我重新启动它后,它又回到使用 2.0.x 并且这个错误消失了。

【讨论】:

【参考方案4】:

在我的情况下,我通过在 Azure 的 FunctionApp 中的 FunctionAppSettings 下将运行时版本 3 更改为 2 解决了这个问题

【讨论】:

【参考方案5】:

如果您使用的是 EF Core,v2.1.4 似乎可以工作。

【讨论】:

以上是关于Azure 函数 - 此平台不支持 System.Data.SqlClient的主要内容,如果未能解决你的问题,请参考以下文章

Azure 函数计时器 SQL 客户端失败

Azure AD Graph:此平台不支持安全二进制序列化

此平台不支持 System.Data.SqlClient

无法在引用类库的 azure 函数中加载文件或程序集“System.Data.Entity 4.0.0.0”

此平台不支持 LocalDB

Windows Azure 虚拟网络点到站点:此连接需要此平台上不可用的安全功能