我已经在issue中打开了Azure/azure-functions-host
并且我有一个repo的重复步骤,但是我在这里张贴这个以防万一我本来就有什么问题我正在做,或者有人已经绊倒了这个问题。
我的目标:我想在azure函数中运行一些代码,这些代码存在于现有visual studio解决方案的类库中。
此代码恰好使用实体框架核心来读取和写入SQL Server数据库。
在尝试隔离我面临的问题时,我最终得到了以下方案:
Repro步骤:
在Visual Studio中:文件>新>项目> Azure功能
选择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
)
点击控制台中打印的网址
预期行为:以及示例Http trigger
函数的默认行为,我希望每次调用都会看到以下行:
Microsoft.EntityFrameworkCore.DbContext, Microsoft.EntityFrameworkCore, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
实际行为:应用程序在运行时抛出异常并输出以下内容
[11-Apr-18 6:33:59 AM]执行'Function1'(Reason ='此功能通过主机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
,则会观察到类似的行为。
答案 0 :(得分:4)
解决方法:对于Microsoft.EntityFrameworkCore
回滚到2.0.1版。不知道它是否是已知的EFCore问题,但回滚到2.0.1有助于解决完全相同的问题。