Операция Xamarin.iOS не поддерживается на этой платформе. Исключение в Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod - PullRequest
0 голосов
/ 09 декабря 2018

Я работаю над кроссплатформенным проектом с Xamarin.Forms.В моем проекте я использую API для входа по имени пользователя и паролю.Когда я пытаюсь войти на платформе Android и UWP, это работает отлично.Но когда я хочу войти в свой проект iOS, он выдает исключение, которое говорит:

System.PlatformNotSupportedException: операция не поддерживается на этой платформе.

Исключениев этой строке моего кода:

HttpContent content = new FormUrlEncodedContent(keyValuePairs);
HttpResponseMessage response = await httpClient.PostAsync("token", content);

Вот полное StackTrace:

в System.Reflection.Emit.DynamicMethod..ctor (имя System.String,System.Type returnType, System.Type [] parameterTypes, владелец System.Type, System.Boolean skipVisibility) [0x00006] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.11/src/Xamarin.iOS/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.notsupported.cs:62

at Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod (имя System.String, System.Type returnType. SystemparameterTypes, владелец System.Type) [0x00000] в /_/Src/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs:45

в Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDefaultConstructor [T] (тип System.Type) [0x00000] в /_/Src/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs:244

в Newtonsoft.Json.Serialization.DefaultContractResolTyreatcreateType) [0x00000] в /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:780

в Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract (Newtonsoft.Json.CractbaseJ)] в /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:813

в Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type objectType) [0x00007r] в / _ _.Json / Serialization / DefaultContractResolver.cs: 340

в Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType) [0x0010f] в /_/Src/Newtonsoft.Json/Serialization/eston.Sverization/esto.: 1249

в System.Collections.Concurrent.ConcurrentDictionary 2[TKey,TValue].GetOrAdd (TKey key, System.Func 2 [T, TResult] valueFactory) [0x00034] в /Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.11/src/Xamarin.iOS/external/corefx/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs:1003

в Newtonsoft.Json.Utilities.ThreadSafeStore`2 [TKey, TValue] .Get (ключ TKey) [0x00000] в / _ / Src /Newtonsoft.Json / Utilities / ThreadSafeStore.cs: 64

в Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (тип System.Type) [0x0000b] в /_/Src/Newtonsoft.Json/Serializationont_Dolault.cs: 198

в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (тип System.Type) [0x0000b] в /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:135

** в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (считыватель Newtonsoft.Json.JsonReader, System.Type objectType, System.Boolean checkAdditionalContent) [0x0000e] в /_/Src/Newtonsoft.Json/Serialization / JsonSerializerInternalReader.cs: 143

в Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader, System.Type objectType) [0x00046] в /_/Src/Newtonsoft.Json/JsonSerial.: 907

в Newtonsoft.Json.JsonSerializer.Deserialize (читатель Newtonsoft.Json.JsonReader, System.Type objectType) [0x00000] в /_/Src/Newtonsoft.Json/JsonSerializer.cs:886

в Newtonsoft.Json.JsonConvert.DeserializeObject (значение System.String, тип System.Type, настройки Newtonsoft.Json.JsonSerializerSettings)[0x0002d] в /_/Src/Newtonsoft.Json/JsonConvert.cs:830

в Newtonsoft.Json.JsonConvert.DeserializeObject [T] (значение System.String, параметры Newtonsoft.Json.JsonSerializerSettings) [0x00000] в /_/Src/Newtonsoft.Json/JsonConvert.cs:786

в Newtonsoft.Json.JsonConvert.DeserializeObject [T] (значение System.String) [0x00000] в / _ / Src / Newtonsoft.Json / JsonConvert.cs: 719

в Restaurant.Core.DataServices.LoginDataService + d__0.MoveNext () [0x00222] в C: \ Проекты \ Ресторан \ Ресторан \ Restaurant.Core \ DataServices \ LoginDataService.cs:44

--- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение ---
в Restaurant.Core.ViewModels.Login.LoginViewModel +d.MoveNext () [0x00058] в C: \ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ ViewModels \ Login \ LoginViewModel.cs: 78

--- Конец трассировки стека из предыдущего расположения, где было исключениеброшенный ---
в Restaurant.Core.Helpers.ExceptionHandler + d__3.MoveNext () [0x000f6] в C: \ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ Helpers \ ExceptionHandler.cs: 38

Я прогуглил его и, наконец, обнаружил, что Xamarin.iOS имеет некоторые ограничения .System.Reflection.Emit недоступен в Xamarin.iOS.

Я думаю, что-то не так с Newtonsoft.Json или, возможно, с самим Xamarin, но я не знаю, как решить проблему.

1 Ответ

0 голосов
/ 09 декабря 2018

Существует три способа решения проблемы:

  1. Найдите, какая именно строка вызывает проблему, и попробуйте найти альтернативу, которая подходит вам
  2. Попробуйте установить более старую версию(или более новую, если имеется) версию NewtonSoft Json и посмотрите, работает ли она
  3. Отправьте вопрос в NewtonSoft и подождите, пока они его не решат: https://github.com/JamesNK/Newtonsoft.Json/issues

Вы также можетеотправьте вопрос в Xamarin, но, очевидно, это его текущее техническое решение сделать это так, так что вы не можете ожидать, что они примут это как срочное или даже захотят его исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...