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

15

我在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 在此平台上不受支持

这是它正在使用的依赖项链:

enter image description here

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


我在Windows Server 2016的生产环境中,使用.NET Core 2.1.6时也遇到了同样的问题。我没有任何关于System.Data.SqlClient v4.6.0 nuget包的直接引用。因此,我不知道它如何被更新,也不知道如何删除或还原它... - Cheshire Cat
5个回答

21

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

否则,解决方法是自行加载程序集。右键单击“Function”项目和编辑<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>

目前有一个与这个程序集引用问题相关的问题正在被跟踪。


我尝试了4.8版本,但仍然抛出相同的异常,但4.5.1可以正常工作。 - Dulanga Heshan
在 Mac 上使用 VS - 这可以工作,但您需要将反斜杠更改为正斜杠。 - SuperFrog

4

我将System.Data.SqlClient降级至4.6.0版本,这样就可以正常运行了。


还需要在函数应用程序项目的csproj文件中添加Nuget包引用。 - Judy007
乔伊,你是什么意思? - Steven Elliott

3

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


3

我刚在一个 Azure Functions 实例上遇到了这个问题,它不知何故被配置为使用 .NET Core 3.0.0。我将配置设置 FUNCTIONS_EXTENSION_VERSIONbeta 更改为 ~2。重启后,它又回到使用 2.0.x,并且此错误消失了。


0
如果您正在使用EF Core,则v2.1.4似乎可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接