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_VERSION
从 beta
更改为 ~2
。我重新启动它后,它又回到使用 2.0.x 并且这个错误消失了。
【讨论】:
【参考方案4】:在我的情况下,我通过在 Azure 的 FunctionApp 中的 FunctionAppSettings 下将运行时版本 3 更改为 2 解决了这个问题
【讨论】:
【参考方案5】:如果您使用的是 EF Core,v2.1.4 似乎可以工作。
【讨论】:
以上是关于Azure 函数 - 此平台不支持 System.Data.SqlClient的主要内容,如果未能解决你的问题,请参考以下文章