2016-08-31 2 views
1

Я пытаюсь опубликовать свое веб-приложение на Azure с помощью Visual Studio 2013. Когда я вхожу в систему для своей учетной записи azure, я получаю эту ошибку. Затем я переустановил пакет Json.Net, но имел ту же ошибку. Я искал решение, но не нашел. Пожалуйста помоги!!! enter image description hereNewtonsoft.Json.Linq.JArray.GetEnumerator() Метод не найден

ответ

0

Вы видели это? http://james.newtonking.com/archive/2013/11/29/fixing-jarray-getenumerator-method-not-found-bug

Причина

В Json.NET 5.0.5 я изменил видимость JArray.GetEnumerator от интерфейса явной для общественности. Побочным эффектом GetEnumerator, являющимся общедоступным, является компилятор C#, который больше не будет добавлять IEnumerable для перебора циклов foreach. Приведение в действие необходимо, когда GetEnumerator является явным интерфейсом и доступен только в том случае, когда объект передается в IEnumerable.

Ошибка возникает тогда, когда приложение или пакет, который имеет цикл foreach над JArray и скомпилирован с открытым GetEnumerator, запускается с использованием более старой версии Json.NET, возможной из GAC, где GetEnumerator не является общедоступным , Поскольку в IEnumerable нет метаданных, тогда .NET не может найти метод GetEnumerator и генерируется исключение.

tl; dr; просто скажите мне, как исправить это

Если вы являетесь конечным пользователем и получаете эту ошибку, убедитесь, что версия Json.NET, загружаемая вашим приложением, составляет 5.0.8. Если у вас есть 5.0.8 в вашем \ bin каталоге, и вы все равно получите эту ошибку, проверьте также GAC и при необходимости обновите его.

Если вы являетесь автором пакета и пользователь получает эту ошибку из вашего кода, то понизите версию Json.NET, которую ваш пакет использует в версии 5.0.4, перекомпилируйте и выпустите новую версию своего пакета. Если вы не можете понизить рейтинг, то другой вариант заключается в добавлении переноса IEnumerable в цикл ошибок foreach.

Смежные вопросы