我在公司的iPhone和iPad上运行了一堆Xamarin iOS应用程序。我最近将Visual Studio和Mac Book Pro升级到了最新发行版,并且我的应用程序不再能够正确处理来自Web服务的数据。我没有更改Xamarin.Forms的版本
VS 2017版本15.9.13 Xamarin.Forms.2.4.0.282
Web服务是http。我有我的NSAppTransportSecurityNSAllowsArbitraryLoads 设置为允许使用http。
我正在使用标志true来在Web Service Reference.cs文件中生成Task.Factory.FromAsync方法。
如果有人需要更多信息,我可以继续介绍所有工作原理。
幸运的是,我的Mac Book Pro Simulator在不同的iPhone / iPad设备上安装了旧版和新版应用程序,供我测试。我安装了提琴手以确保所有请求/响应都相同。我在一台设备上的旧应用程序可以工作,而我在另一台设备上的新应用程序失败。我所有的应用程序都一样。旧的有效,新的无效。
当我查看提琴手时,请求和响应都一样工作: 提出要求 应用程序收到身份验证提示 验证发生 请求返回代码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;
}
有人知道我可以使用任何调试或日志记录工具来找出为什么我的成功响应丢失的原因吗?