【发布时间】:2018-04-11 22:15:42
【问题描述】:
我已经在Azure/azure-functions-host 中打开了一个issue,并且我有一个带有重现步骤的repo,但是我将其发布在这里,以防我正在做的事情存在固有的错误,或者有人有已经无意中打开了这个问题。
我的目标:我想在一个 azure 函数中运行一些存在于现有 Visual Studio 解决方案中的类库中的代码。
此代码恰好使用实体框架核心来读取和写入 SQL Server 数据库。
在尝试隔离我所面临的问题时,我最终遇到了以下情况:
复制步骤:
在 Visual Studio 中:文件 > 新建 > 项目 > Azure Functions
选择
Azure Functions v2 Preview (.NET Core)选择
Http trigger选择
Storage Emulator选择访问权限
Function使用nuget安装
Microsoft.EntityFrameworkCore版本2.0.2-
从
EFCore包中添加对任何内容的调用就我而言,我添加了以下行:
log.Info(typeof(DbContext).AssemblyQualifiedName); 确保 Azure 存储模拟器正在运行
从 Visual Studio 运行函数 (
F5)点击控制台打印的url
预期行为:连同示例 Http trigger 函数的默认行为,我希望看到每次调用都会打印以下行:
Microsoft.EntityFrameworkCore.DbContext, Microsoft.EntityFrameworkCore, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
实际行为:应用在运行时抛出异常并输出以下内容
[11-Apr-18 6:33:59 AM] 执行“Function1”(原因='此函数已通过主机 API 以编程方式调用。',Id=6faabfd8-eb96-4d71-906c-940028a7978a)
[11-Apr-18 6:33:59 AM] 执行“Function1”(失败,Id=6faabfd8-eb96-4d71-906c-940028a7978a)
[11-Apr-18 6:33:59 AM] System.Private.CoreLib:执行函数时出现异常:Function1。 FunctionApp1:无法加载文件或程序集“Microsoft.EntityFrameworkCore,Version=2.0.2.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。无法找到或加载特定文件。 (来自 HRESULT 的异常:0x80131621)。 System.Private.CoreLib:无法加载文件或程序集“Microsoft.EntityFrameworkCore, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”。
当前猜想:在研究这个问题时,我发现了一些可能相关的东西:
Azure 函数运行时已经有一组可用的包,其中一个是特定版本中的 Newtonsoft.Json。如果从项目中引用了较新版本的 Newtonsoft.Json,则会观察到类似的行为。
【问题讨论】:
标签: c# azure entity-framework-core azure-functions