Вызов веб-службы остановлен - PullRequest
0 голосов
/ 12 июня 2019

У меня есть несколько приложений Xamarin для iOS, работающих на наших корпоративных iPhone и iPad. Я недавно обновил Visual Studio и Mac Book Pro до последней версии, и мои приложения больше не обрабатывают данные из моего веб-сервиса правильно. Я не менял версию Xamarin.Forms

VS 2017 Версия 15.9.13 Xamarin.Forms.2.4.0.282

  1. Веб-сервисы http. У меня есть NSAppTransportSecurityNSAllowsArbitraryLoads установите для разрешения http.

  2. Я использую флаг true для генерации методов Task.Factory.FromAsync в файле Web-службы Reference.cs.

  3. Я мог бы продолжить с описанием того, как все работает, если кому-то нужна дополнительная информация.

К счастью, на моем симуляторе Mac Book Pro установлены старые и новые версии моих приложений, установленные на разных устройствах iPhone / iPad для тестирования. Я установил Fiddler, чтобы убедиться, что все запросы / ответы были одинаковыми. Мое старое приложение на одном устройстве работает, и мое новое приложение на другом устройстве не работает. То же самое для ВСЕХ моих приложений. Старый работает, а новый выходит из строя.

Когда я проверяю Fiddler, все запросы и ответы работают одинаково: Запрос сделан Приложение получает запрос аутентификации Аутентификация происходит Запрос возвращает код 200 с запрошенными данными

Единственное отличие в Fiddler состоит в том, что два заголовка расположены в разном порядке: рабочий имеет сначала SOAPAction, а затем Content-Type, а другой - Content-Type, а затем SOAPAction. Я хватаюсь за соломинку здесь, потому что порядок этих заголовков не должен иметь значения.

Это для всех приложений. Единственная проблема заключается в том, что мои новые приложения игнорируют ответ. Это почти как функция endMethod из параметра, переданного FromAsync, никогда не вызывается.

Это вызов функции:

    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;
    }

Кто-нибудь знает какие-либо инструменты отладки или регистрации, которые я мог бы использовать, чтобы выяснить, почему мой успешный ответ потерян?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...