Newtonsoft.Json.Linq.JArray.GetEnumerator()找不到方法

时间:2016-08-31 06:51:03

标签: json linq azure

我正在尝试使用Visual Studio 2013在Azure上发布我的Web应用程序。当我登录到我的azure帐户时,我收到此错误。 然后我重新安装Json.Net包,但有相同的错误。我正在寻找解决方案,但没有找到任何解决方案。请帮忙!!! enter image description here

1 个答案:

答案 0 :(得分:1)

你看到了这个吗? http://james.newtonking.com/archive/2013/11/29/fixing-jarray-getenumerator-method-not-found-bug

  

原因

在Json.NET 5.0.5中,我将JArray.GetEnumerator的可见性从显式接口更改为public。 GetEnumerator公开的副作用是C#编译器将不再向foreach循环添加IEnumerable强制转换。当GetEnumerator是接口显式时,需要强制转换,并且仅在将对象强制转换为IEnumerable时才可访问。

当一个应用程序或包通过JArray进行foreach循环并使用公共GetEnumerator进行编译时,会发生错误,使用旧版本的Json.NET运行,可能是GAC之外的,而GetEnumerator不是公共的。因为IEnumerable没有强制转换,所以.NET无法找到GetEnumerator方法并抛出异常。

  

TL;博士;告诉我如何解决它

如果您是最终用户并且遇到此错误,请确保您的应用程序加载的Json.NET版本是5.0.8。如果您的\ bin目录中有5.0.8但仍然出现此错误,请检查GAC并在必要时进行更新。

如果您是软件包作者并且用户报告从您的代码中收到此错误,则将您的软件包使用的Json.NET版本降级到5.0.4,重新编译并发布新版本的软件包。如果你不能降级,那么另一个选择是将错误的foreach循环添加IEnumerable强制转换。