首页 文章

此平台不支持Xamarin.iOS操作Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod上的异常

提问于
浏览
0

我正在使用Xamarin.Forms开展跨平台项目 . 在我的项目中,我使用API通过用户名和密码登录 . 当我尝试登录Android和UWP平台时,它完美无缺 . 但是,当我想登录我的iOS项目时,它会抛出一个异常,说:

System.PlatformNotSupportedException:此平台不支持操作 .

在我的代码的这一行抛出异常:

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

这是完整的StackTrace:

在/ Library / Frameworks / Xamarin中的System.Reflection.Emit.DynamicMethod..ctor(System.String name,System.Type returnType,System.Type [] parameterTypes,System.Type owner,System.Boolean skipVisibility)[0x00006] .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 name,System.Type returnType,System.Type [] parameterTypes,System.Type owner)[0x00000] in ///scrc/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs:45 at Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDefaultConstructor [ T中的(System.Type类型)[0x00000]位于/ /rc/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs:244中的Newtonsoft.Json.Serialization.DefaultContractResolver.GetDefaultCreator(System.Type createdType)[0x00000] in / _ /src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:780 at Newtonsoft.Json.Seriali在Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(System.Type objectType)的//Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:813中的zation.DefaultContractResolver.InitializeContract(Newtonsoft.Json.Serialization.JsonContract contract)[0x0008b] )//Src/Newtonsoft.Json/中的//Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:340中的[0x00007]://Src/Newtonsoft.Json/中的Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(System.Type objectType)[0x0010f] Serialization / DefaultContractResolver.cs:1249 at System.Collections.Concurrent.ConcurrentDictionary2 [TKey,TValue] .GetOrAdd(TKey key,System.Func2 [T,TResult] valueFactory)[0x00034] in /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 at Newtonsoft.Json.Utilities.ThreadSafeStore`2 [TKey ,TValue] . 在//Src/Newtonsoft.Json/Utilities/Th获取(TKey键)[0x00000] readSafeStore.cs:64位于Newtonsoft.Json.Serialization.JsonSerialractInternalReader的//Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:198中的Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(System.Type type)[0x0000b] . 在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader reader,System.Type objectType,/)中的//Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:133中的GetContractSafe(System.Type类型)[0x0000b]在Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader reader,System.Type objectType)[0x00046]中的//Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:143中的System.Boolean checkAdditionalContent)[0x0000e] //Src/Newtonsoft.Json/JsonSerializer.cs:907在//Src/Newtonsoft.Json/JsonSerializer中的Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader reader,System.Type objectType)[0x00000] . cs:886在Newtonsoft.Json.JsonConver在Newtonsoft.Json.JsonConvert.DeserializeObject [T]的//Src/Newtonsoft.Json/JsonConvert.cs:830中的t.DeserializeObject(System.String值,System.Type类型,Newtonsoft.Json.JsonSerializerSettings设置)[0x0002d] (System.String值,Newtonsoft.Json.JsonSerializerSettings设置)[0x00000] in ///Src/Newtonsoft.Json/JsonConvert.cs:786 at Newtonsoft.Json.JsonConvert.DeserializeObject [T](System.String value)[0x00000在/_/Src/Newtonsoft.Json/JsonConvert.cs:719在C:\ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ DataServices \ LoginDataService的Restaurant.Core.DataServices.LoginDataService d__0.MoveNext()[0x00222]中 . cs:44 ---抛出异常的前一个位置的堆栈跟踪结束---在C:\ Projects \ Restaurant \ Restaurant的Restaurant.Core.ViewModels.Login.LoginViewModel <b__13_0> d.MoveNext()[0x00058] \ Restaurant.Core \ ViewModels \ Login \ LoginViewModel.cs:78 ---抛出异常的前一个位置的堆栈跟踪结束---在Restaurant.Core.Helpers.Exceptio nHandler d _3.MoveNext()[0x000f6]在C:\ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ Helpers \ ExceptionHandler.cs:38

我用Google搜索,最后发现Xamarin.iOS有some limitations . System.Reflection.Emit在Xamarin.iOS中不可用 .

我想Newtonsoft.Json或者Xamarin本身有问题,但我不知道如何解决这个问题 .

1 回答

  • 0

    有解决问题的三种方法:

    • 找出导致问题的确切线条,并尝试找到适合您的替代方案

    • 尝试安装NewtonSoft Json的一些旧版本(或更新版本)并查看它是否有效

    • 将问题提交给NewtonSoft并等到/如果他们处理它:https://github.com/JamesNK/Newtonsoft.Json/issues

    你也可以将问题提交给Xamarin,但显然他们目前的技术决定就是这样,所以你不能指望他们会把它当作急事,或者他们甚至愿意修复它 .

相关问题