我在做一个Azure函数。我使用的是Microsoft.Azure.Devices.Shared,它需要NewtonSoft v11,所以我已经实现了一些手动绑定重定向,它似乎正在使用应用程序域(见下文)。但不知怎么的,如果我正确地阅读下面的日志,NewtonSoft就会很难引用NewtonSoft应用程序域:
2018-05-21T22:03:03.824 Info : ANewtonsoft.Json.Linq.JObject不能转换为BNewtonsoft.Json.Linq.JObject。类型A来源于位于'D:\Program (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'.‘的上下文中的'Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed’B类型源自字节数组中上下文'Newtonsoft.Json‘、Version=11.0.0.0、Culture=neutral、PublicKeyToken=30ad4fe6b2a6aeed中的'LoadNeither’。
我的Newtonsoft v11 dll位于函数的bin目录中,在此引用如下:
#r "bin\Newtonsoft.Json.dll"函数中有实际代码,这些代码在函数中正确工作:
dynamic eventHubMessage =
JsonConvert.DeserializeObject<JObject>(myEventHubMessage);但当它碰到这条线时:
CRSLTwinData twinData = IotHubProxy.GetTwinData(hubDeviceId);它抛出了异常。其中提到了M.A.D.Shared和Newtonsoft 11。
我已经尽力让这个函数使用11版本的dll,但是显然有些地方不正常。
更新:我们尝试重定向到9,但得到了以下结果:
2018-05-22T13:24:48.336信息例外: ANewtonsoft.Json.Linq.JObject不能转换为BNewtonsoft.Json.Linq.JObject。类型A来源于位于'D:\Program (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'.‘的上下文中的'Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed’类型B来源于'Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed‘中位于’D:\local\临时ASP.NET ASP.NET‘的上下文'LoadFrom’中的‘LoadFrom’
然后,我们尝试重定向到10,得到如下结果:):
2018-05-22T14:16:14.509信息异常: ANewtonsoft.Json.Linq.JObject不能转换为BNewtonsoft.Json.Linq.JObject。类型A来源于位于'D:\Program (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'.‘的上下文中的'Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed’类型B来源于'Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed‘中位于’D:\local\临时ASP.NET ASP.NET‘的上下文'LoadFrom’中的‘LoadFrom’
发布于 2018-05-26 10:52:02
我想您使用的是已经知道装配分辨率问题的azure函数1.0。
由于webjob使用了严格的Newtonsoft版本号,我在我的项目中所做的就是将我的所有版本降级为与sdk的
发布于 2018-06-29 20:15:38
使用Microsoft.NET.Sdk.Functions版本1.0.13,它使用Newtonsoft.Json 10.0.3
https://stackoverflow.com/questions/50457268
复制相似问题