将.Net Core控制台应用程序作为Azure Webjob运行时,与Azure SQL数据库的连接错误

时间:2019-03-13 19:36:54

标签: azure .net-core azure-sql-database azure-webjobs webjob

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

  

dotnet发布-c发布-r win-x64-自包含的假

将其压缩并上传并在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": {}
}

1 个答案:

答案 0 :(得分:1)

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

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

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

解决方案:

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

<PlatformTarget>x64</PlatformTarget>