首页 > 解决方案 > 将 .Net Core 控制台应用程序作为 Azure Webjob 运行时与 Azure SQL 数据库的连接错误

问题描述

我有 .Net Core 控制台应用程序,它使用实体框架连接到 Azure SQL 数据库。每个想法在本地都可以正常工作,但是当我使用此命令行创建发布包时

dotnet publish -c Release -r win-x64 --self-contained false

将其压缩并上传并在 Azure webjob 中使用我在作业输出中收到此异常:

使用与服务器“tcp:myServer.database.windows.net,1433”上的数据库“myDB”的连接时发生错误。

[03/13/2019 19:10:11 > 62ab86:INFO] System.TypeInitializationException:“System.Data.SqlClient.TdsParser”的类型初始化程序引发了异常。---> System.TypeInitializationException:“System.Data.SqlClient.SNILoadHandle”的类型初始化程序引发了异常。---> System.BadImageFormatException:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

我将此部分添加到 .json 文件中,但没有帮助

"runtimes": {
"win7-x64": {},
"win10-x64": {}
}

标签: azure.net-coreazure-sql-databaseazure-webjobswebjob

解决方案


显然,当 .NET Core 项目迁移到 csproj 格式时,在某些情况下生成的 csproj 将不会收到显式的<PlatformTarget>.

在进行通常的构建与发布时,Visual Studio 的行为似乎并不相同。

在这两个基础上,它将构建一个只有 32 位的 PE32 可执行文件。但是在发布时,它将同时部署 64 位库,导致上述BadImageFormatException.,而在非发布版本中不会这样做

解决方案:

project>Properties>Build页面中,选择platform targetto x64。如果没有任何视觉效果的事件,则会在保存时将显式添加到 csproj。

<PlatformTarget>x64</PlatformTarget>

推荐阅读