xamarin.forms - Web 服务调用已停止处理
问题描述
我有一堆 Xamarin iOS 应用程序在我们的企业 iPhone 和 iPad 上运行。我最近将我的 Visual Studio 和 Mac Book Pro 升级到最新版本,我的应用程序不再正确处理来自我的 Web 服务的数据。我没有更改 Xamarin.Forms 的版本
VS 2017 版本 15.9.13 Xamarin.Forms.2.4.0.282
网络服务是http。我将 NSAppTransportSecurityNSAllowsArbitraryLoads 设置为允许 http。
我正在使用标志 true 在 Web 服务 Reference.cs 文件中生成 Task.Factory.FromAsync 方法。
如果有人需要更多信息,我可以继续描述一切是如何运作的。
幸运的是,我的 Mac Book Pro 模拟器在不同的 iPhone/iPad 设备上安装了我的应用程序的新旧版本供我测试。我安装了 fiddler 以确保所有请求/响应都是相同的。我在一台设备上的旧应用程序可以工作,而我在另一台设备上的新应用程序失败。我所有的应用程序都是一样的。旧的有效,新的失败。
当我查看提琴手时,请求和响应都工作相同: 发出请求 应用程序获得身份验证提示 身份验证发生 请求返回代码 200 和请求的数据
Fiddler 中唯一的区别是其中两个标头的顺序不同:工作的一个首先具有 SOAPAction,然后是 Content-Type,失败的一个具有 Content-Type,然后是 SOAPAction。我在这里抓住了稻草,因为这些标题的顺序无关紧要。
这适用于所有应用程序。唯一的问题是我的新应用程序忽略了响应。几乎就像从不调用传递给 FromAsync 的参数的 endMethod 函数一样。
这是函数调用:
public async Task<ProcessLogon> ExecuteSaveLogon(DeviceItem DeviceItem)
{
ResultLogin = new ProcessLogon();
try
{
var ProcessLogon = await Task<WebServiceTrading.ProcessLogon>.Factory.FromAsync(serviceTrading.BeginSaveLogon, serviceTrading.EndSaveLogon, ToServiceTrading(DeviceItem), TaskCreationOptions.None);
ResultLogin = FromServiceTrading(ProcessLogon);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(@"ExecuteSaveLogon ERROR {0}", ex.Message);
}
return ResultLogin;
}
有谁知道我可以使用任何 DEBUG 或 LOGGING 工具来找出我的成功响应丢失的原因?
解决方案
推荐阅读
- android - 导航视图不显示
- ruby-on-rails - 非标准键引用的导入任务
- windows - 仅在文件更改期间如何在两台不同的计算机上同步 2 个目录内容
- angular - 将库添加到 Angular 项目后出现 nanoScroller 错误
- mongodb - 是否可以将 mongodb 主节点合并到单个辅助节点?
- ios - Swinject - 如何从一个解析器两次解析同一个控制器?
- dart - flutter :获取手势检测器的本地位置
- javascript - 在 Swift 中使用 JavaScript 交互和提交 HTML 表单
- java - Java:从 GitHub 运行 jenkins 作业并从另一个位置加载凭据
- go - 将 JSON 解组为具有 nil 值的结构