首页 > 解决方案 > Web 服务调用已停止处理

问题描述

我有一堆 Xamarin iOS 应用程序在我们的企业 iPhone 和 iPad 上运行。我最近将我的 Visual Studio 和 Mac Book Pro 升级到最新版本,我的应用程序不再正确处理来自我的 Web 服务的数据。我没有更改 Xamarin.Forms 的版本

VS 2017 版本 15.9.13 Xamarin.Forms.2.4.0.282

  1. 网络服务是http。我将 NSAppTransportSecurityNSAllowsArbitraryLoads 设置为允许 http。

  2. 我正在使用标志 true 在 Web 服务 Reference.cs 文件中生成 Task.Factory.FromAsync 方法。

  3. 如果有人需要更多信息,我可以继续描述一切是如何运作的。

幸运的是,我的 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 工具来找出我的成功响应丢失的原因?

标签: xamarin.formsvisual-studio-2017

解决方案


推荐阅读