azure - 将 .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": {}
}
解决方案
显然,当 .NET Core 项目迁移到 csproj 格式时,在某些情况下生成的 csproj 将不会收到显式的<PlatformTarget>
.
在进行通常的构建与发布时,Visual Studio 的行为似乎并不相同。
在这两个基础上,它将构建一个只有 32 位的 PE32 可执行文件。但是在发布时,它将同时部署 64 位库,导致上述BadImageFormatException
.,而在非发布版本中不会这样做。
解决方案:
在project>Properties>Build
页面中,选择platform target
to x64。如果没有任何视觉效果的事件,则会在保存时将显式添加到 csproj。
<PlatformTarget>x64</PlatformTarget>
推荐阅读
- visual-studio-code - VSCODE 中的 Jupyter-notebook 体验
- docker - 如何从主机连接在 docker 容器上运行的服务
- c++ - 在 C++ 中编写野牛时如何更改或查看输入流?
- regex - 在 Google 电子表格中多次提取两个字符串之间的文本
- pandas - 如果列值具有多个值,则在数据框中创建新记录
- list - 如何在Scala中对列表中的值求和?
- javascript - 在传单的标题中添加所选点的摘要
- python - 如何裁剪使用 mobilenetv2-yolov3 检测到的图像?
- jsp - 在 HTML 注释中描述 jsp:setProperty 操作标记时出现内部服务器错误
- windows - 无法使用 ansible 查询 postgres