1

我正在开发 Azure 功能。我正在使用 Microsoft.Azure.Devices.Shared,它需要 NewtonSoft v11,因此我已经使用似乎正在工作的应用程序域实现了一些手动绑定重定向(见下文)。但不知何故,如果我正确阅读下面的日志,就会对 NewtonSoft 与之冲突的 WebJob 应用程序域进行硬引用:

2018-05-21T22:03:03.824 [信息] 例外:[A]Newtonsoft.Json.Linq.JObject 不能转换为 [B]Newtonsoft.Json.Linq.JObject。类型 A 源自位置“D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin \Newtonsoft.Json.dll'。类型 B 源自字节数组中上下文“LoadNeither”中的“Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”。

我的 Newtonsoft v11 dll 位于函数的 bin 目录中,并在那里被引用,如下所示:

#r "bin\Newtonsoft.Json.dll"

函数中有实际代码在函数中正常工作:

dynamic eventHubMessage =
JsonConvert.DeserializeObject<JObject>(myEventHubMessage);

但是当它到达这条线时:

CRSLTwinData twinData = IotHubProxy.GetTwinData(hubDeviceId);

它抛出异常。其中提到了 MADShared 和 Newtonsoft 11。

我已经尽我所能来获得使用 11 版 dll 的功能,但显然有些东西出了问题。

更新:我们尝试重定向到 9 并得到了这个:

2018-05-22T13:24:48.336 [信息] 例外:[A]Newtonsoft.Json.Linq.JObject 不能转换为 [B]Newtonsoft.Json.Linq.JObject。类型 A 源自位置“D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin \Newtonsoft.Json.dll'。类型 B 源自 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 在上下文 'LoadFrom' 的位置'D:\local\Temporary ASP.NET Files\root\e801054b\3f30c00f\assembly \dl3\e5381214\00f64e9a_9af1d301\Newtonsoft.Json.dll'。

然后我们尝试重定向到 10 并得到了这个:):

2018-05-22T14:16:14.509 [信息] 例外:[A]Newtonsoft.Json.Linq.JObject 不能转换为 [B]Newtonsoft.Json.Linq.JObject。类型 A 源自位置“D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin \Newtonsoft.Json.dll'。类型 B 源自 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 在上下文 'LoadFrom' 的位置'D:\local\Temporary ASP.NET Files\root\e801054b\3f30c00f\assembly \dl3\e5381214\00f64e9a_9af1d301\Newtonsoft.Json.dll'。

4

2 回答 2

0

我假设您使用的是已知程序集解析问题的 azure function 1.0 。

由于webjob使用严格的Newtonsoft json版本号,我在我的项目中所做的就是将所有我的降级为与sdk的内联

于 2018-05-26T10:52:02.690 回答
-1

使用 Microsoft.NET.Sdk.Functions 版本 1.0.13,它消耗 Newtonsoft.Json 10.0.3

于 2018-06-29T20:15:38.153 回答