我正在使用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
在Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod (System.String名称,System.Type returnType,System.Type [] parameterTypes,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.DefaultContractResolver.GetDefaultCreator (System.Type createdType)[0x00000]在 /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:780
在Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract (Newtonsoft.Json.Serialization.JsonContract合同)[0x0008b]在 /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:813
在Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type objectType)[0x00007]在 /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:340
在Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType)[0x0010f]在 /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs: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 (系统类型类型)[0x0000b]在 /_/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:198
在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (系统类型类型)[0x0000b]在 / _ / Src / Newtonsoft.Json / Serialization / JsonSerializerInternalReader.cs:133
在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/JsonSerializer.cs: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设置) /_/Src/Newtonsoft.Json/JsonConvert.cs:830
中的[0x0002d] 在Newtonsoft.Json.JsonConvert.DeserializeObject [T](System.String值, Newtonsoft.Json.JsonSerializerSettings设置)[0x00000]在 /_/Src/Newtonsoft.Json/JsonConvert.cs:786
在Newtonsoft.Json.JsonConvert.DeserializeObject [T](System.String值) /_/Src/Newtonsoft.Json/JsonConvert.cs:719
中的[0x00000] 在Restaurant.Core.DataServices.LoginDataService + d__0.MoveNext() [0x00222]在 C:\ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ DataServices \ LoginDataService.cs:44
---从上一个引发异常的位置开始的堆栈结束---
在 Restaurant.Core.ViewModels.Login.LoginViewModel +d.MoveNext ()[0x00058] in C:\ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ ViewModels \ Login \ LoginViewModel.cs:78 ---从上一个引发异常的位置开始的堆栈结束---
在 Restaurant.Core.Helpers.ExceptionHandler + d__3.MoveNext ()[0x000f6] in C:\ Projects \ Restaurant \ Restaurant \ Restaurant.Core \ Helpers \ ExceptionHandler.cs:38
我用Google搜索它,最后发现Xamarin.iOS具有some limitations。 Xamarin.iOS中没有System.Reflection.Emit。
我想Newtonsoft.Json或Xamarin本身有问题,但是我不知道如何解决这个问题。
答案 0 :(得分:0)
有三种方法可以解决此问题:
您也可以将该问题提交给Xamarin,但是显然,这是他们目前的技术决定,因此您不能指望他们会如此紧急,甚至不愿意解决它。 / p>