gpt4 book ai didi

azure - 如何解决 NewtonSoft 版本冲突?

转载 作者:行者123 更新时间:2023-12-02 07:08:41 25 4
gpt4 key购买 nike

我正在开发 Azure 函数。我正在使用 Microsoft.Azure.Devices.Shared,它需要 NewtonSoft v11,因此我已经实现了一些与应用程序域的手动绑定(bind)重定向,这些重定向似乎有效(见下文)。但不知何故,如果我正确阅读下面的日志,就会发现 NewtonSoft 与 WebJob 应用程序域发生冲突:

2018-05-21T22:03:03.824 [Info] Exception: [A]Newtonsoft.Json.Linq.JObject cannot be cast to [B]Newtonsoft.Json.Linq.JObject. Type A originates from 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'Default' at location 'D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'. Type B originates from 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'LoadNeither' in a byte array.

我的 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 [Info] Exception: [A]Newtonsoft.Json.Linq.JObject cannot be cast to [B]Newtonsoft.Json.Linq.JObject. Type A originates from 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'Default' at location 'D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'. Type B originates from 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'LoadFrom' at location 'D:\local\Temporary ASP.NET Files\root\e801054b\3f30c00f\assembly\dl3\e5381214\00f64e9a_9af1d301\Newtonsoft.Json.dll'.

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

2018-05-22T14:16:14.509 [Info] Exception: [A]Newtonsoft.Json.Linq.JObject cannot be cast to [B]Newtonsoft.Json.Linq.JObject. Type A originates from 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'Default' at location 'D:\Program Files (x86)\SiteExtensions\Functions\1.0.11702\bin\Newtonsoft.Json.dll'. Type B originates from 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' in the context 'LoadFrom' at location 'D:\local\Temporary ASP.NET Files\root\e801054b\3f30c00f\assembly\dl3\e5381214\00f64e9a_9af1d301\Newtonsoft.Json.dll'.

最佳答案

我假设您正在使用 azure 函数 1.0,它已知 assembly resolution problem

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

关于azure - 如何解决 NewtonSoft 版本冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50457268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com