У меня есть несколько приложений Xamarin для iOS, работающих на наших корпоративных iPhone и iPad. Я недавно обновил Visual Studio и Mac Book Pro до последней версии, и мои приложения больше не обрабатывают данные из моего веб-сервиса правильно. Я не менял версию Xamarin.Forms
VS 2017 Версия 15.9.13
Xamarin.Forms.2.4.0.282
Веб-сервисы http. У меня есть NSAppTransportSecurityNSAllowsArbitraryLoads
установите для разрешения http.
Я использую флаг true для генерации методов Task.Factory.FromAsync в файле Web-службы Reference.cs.
Я мог бы продолжить с описанием того, как все работает, если кому-то нужна дополнительная информация.
К счастью, на моем симуляторе 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;
}
Кто-нибудь знает какие-либо инструменты отладки или регистрации, которые я мог бы использовать, чтобы выяснить, почему мой успешный ответ потерян?