我正在尝试使用Visual Studio 2013在Azure上发布我的Web应用程序。当我登录到我的azure帐户时,我收到此错误。 然后我重新安装Json.Net包,但有相同的错误。我正在寻找解决方案,但没有找到任何解决方案。请帮忙!!! enter image description here
答案 0 :(得分:1)
原因
在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强制转换。