此平台不支持Azure功能-System.Data.SqlClient

时间:2018-12-28 00:36:16

标签: c# azure .net-core azure-functions

我正在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命令?我在做什么错了?

5 个答案:

答案 0 :(得分:6)

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

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

https://mapr.com/docs/61/AdvancedInstallation/Env_Variables_Installer_Container.html跟踪此程序集引用问题。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我已将System.Data.SqlClient降级为4.6.0,然后为我工作

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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