Xamarin 中的便携式 Class 库在 iOS 模拟器上工作,但不在设备上工作

Portable Class Library in Xamarin working on iOS Simulator but not on device

我们有一个 Xamarin 跨平台应用程序,它使用自定义便携式 Class 库与我们公司的 API 进行交互。我们遇到的问题是,当我们使用 iOS 模拟器上的应用程序通过 PCL 发出请求时,一切都按预期工作,但是当我们尝试在实际设备上做同样的事情时,我们从 API 返回了一个 "Bad Request" 错误代码。

我们已经能够确定,当应用程序在设备上 运行 时,我们正在制作的 post 中的主体参数为空,但是当我们在设备上执行相同的操作时模拟器,参数有我们传入的值。

我们的PCL正在使用System.Net.HttpClient,所以我们认为这个答案可能有帮助: 遗憾的是,这没有用,因为 Xamarin 应用程序似乎根本不使用 app.config 文件。

我们已尝试检查以确保我们的 PCL 和 iOS 项目都引用相同版本的 System.Net.HttpClient,但这似乎无法解决问题要么。

我们还尝试了以下错误报告中的解决方法,但无济于事:https://bugzilla.xamarin.com/show_bug.cgi?id=20589

这篇文章过去曾帮助过我们,但似乎对这种情况没有帮助:

应用程序在模拟器和设备上运行时存在几个差异。

其中之一是托管链接器在模拟器构建中禁用(使用 JIT 时速度更快),而在设备构建中启用(相同的逻辑:AOT 构建速度更快)。

您的应用程序可能会(直接或间接)使用反射并需要保留一些成员(例如序列化)。

您可以通过在模拟器版本上启用托管链接器(或在设备版本上禁用它)来尝试此操作。这将告诉您您的问题是否与托管链接器相关(或不相关)。