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

2024-02-19

我正在使用 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 返回类型、System.Type[] 参数类型、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[] 参数类型,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 创建类型) [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.ConcurrentDictionary2[TKey,TValue].GetOrAdd (TKey key, System.Func2[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/Serialization/DefaultContractResolver.cs:198

在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (System.Type 类型) [0x0000b] 中 /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:133

在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader 阅读器、System.Type 对象类型、 System.Boolean checkAdditionalContent) [0x0000e] 中 /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:143

在 Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader 阅读器,System.Type 对象类型)[0x00046] 在 /_/Src/Newtonsoft.Json/JsonSerializer.cs:907

在 Newtonsoft.Json.JsonSerializer.反序列化(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:\Projects\Restaurant\Restaurant\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

我 Google 了一下,终于发现 Xamarin.iOS 有一些限制 https://learn.microsoft.com/en-us/xamarin/ios/internals/limitations#no-dynamic-code-generation。 System.Reflection.Emit 在 Xamarin.iOS 中不可用。

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


有以下三种方法可以解决该问题:

  1. 找出到底是什么线路导致了问题,并尝试找到适合您的替代方案
  2. 尝试安装一些旧版本(或更新版本,如果可用)的 NewtonSoft Json 并查看它是否有效
  3. 将问题提交给 NewtonSoft 并等待/如果他们处理它:https://github.com/JamesNK/Newtonsoft.Json/issues https://github.com/JamesNK/Newtonsoft.Json/issues

您也可以将问题提交给 Xamarin,但显然这是他们当前的技术决定,因此您不能指望他们会认为这是紧急的,或者他们甚至愿意修复它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

此平台不支持 Xamarin.iOS 操作 Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateDynamicMethod 出现异常 的相关文章

  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • 如何引用 .net 可执行文件中的类?

    IL 反汇编程序显示了我想在项目中使用的 Net 可执行文件中的类 我如何使用我自己项目中的这些类 从 Visual Studio 上的项目添加对该可执行文件的引用 您应该有权访问它定义的公共类 可执行文件是一个像任何其他程序集一样的程序集
  • 为什么我需要显式编写“auto”关键字?

    我正在从 C 98 转向 C 11 并且已经熟悉了auto关键词 我想知道为什么我们需要明确声明auto编译器是否能够自动推导类型 我知道 C 是一种强类型语言 这是一条规则 但如果不显式声明变量就不可能实现相同的结果auto 放弃显式的a
  • ScrollableControl 在整个控件周围绘制边框

    我正在构建基于的自定义用户控件ScrollableControl 现在我正在尝试在控件周围添加边框 类似于 DataGridView 的边框 我可以使用以下方法绘制边框 e Graphics TranslateTransform AutoS
  • 合并多边形的高效算法

    我有一个多边形列表 在这个列表中 一些多边形重叠 或者接触其他多边形 我的任务是合并所有相互重叠或接触的多边形 我有一个union执行此操作的方法 做到这一点最有效的方法是什么 我目前能想到的是循环遍历多边形列表 检查合并列表以查看该多边形
  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • 使用 Rhino Mocks 模拟集合

    所以我猜这是很多人想做的事情 模拟集合 过去我用 Rhino 做过这样的事情 var col mock MockRepository GenerateMock
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

    我想编写一个方法 该方法可以完成一些工作 并最终返回另一个与原始方法具有相同签名的方法 这个想法是根据前一个字节值顺序处理字节流 而不进行递归 通过这样调用它 MyDelegate executeMethod handleFirstByte
  • ASP Net Core 属性路由和双正斜杠

    正如所指出的here https stackoverflow com a 20524044 3129340 URL 中包含双斜杠是有效的 我有一个使用属性路由的 ASP Net Core 项目 一个名为GroupController用于处理
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • nVidia 和 ATI 之间的 OpenGL 渲染差异

    最近 我将 ATI 驱动程序 我使用的是 HD7970 更新为最新版本 但我的 OpenGL 项目的一些对象停止工作 更重要的是 他们适用于 nVidia 最新驱动程序 在 960m 上测试 ATI 和 nVidia 渲染管道之间有什么我应
  • GCC编译非常慢(文件大)

    我正在尝试编译一个大的 C 文件 专门用于 MATLAB mexing C 文件大约 20 MB 可用来自 GCC 错误跟踪器 https gcc gnu org bugzilla attachment cgi id 36632如果你想玩一
  • 偏专业化朋友声明

    在下面的代码中 template
  • 编写一个转储屏幕像素的 RDP 客户端

    我想在中实现 RDP 客户端C 它能够获取屏幕所有像素的颜色值并将它们转储到文件中 我知道这在概念上与 RDP 的工作方式不同 但我的应用程序需要它 我正在尝试利用freerdp https github com FreeRDP FreeR
  • 即使没有任何转换,也违反了 C 中的严格别名?

    How can i and u i在此代码中打印不同的数字 即使i定义为int i u i 我只能假设我在这里触发了 UB 但我不知道具体是如何触发的 ideone演示 http ideone com Gcv5Xm如果我选择 C 作为语言
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe

随机推荐