У меня есть родное приложение WinRT, которое использует Azure Mobile для своего бэкэнда. Он прекрасно работает до тех пор, пока он может достичь службы. Если Интернет отключен, любые запросы будут вызывать сбой приложения без предупреждения или места для перехвата исключения, так как сбой происходит при асинхронном вызове. Вот минимальный код, который я нашел, который воспроизводит проблему:
azure::mobile::client c(L"https://MYSERVICE.azure-mobile.net/", L"MYKEY");
azure::mobile::table table(c, L"MYTABLE");
table.read(); // Adding any .then continuation also leads to exception
И вот исключение:
Необработанное исключение в 0x018DCFF6 (msvcr120d_app.dll) в: Недопустимый параметр был передан функции, которая считает недопустимые параметры фатальными.
Если я должен обнаружить соединение с помощью мобильного API Azure перед выполнением каких-либо запросов, я не могу найти никакого способа сделать это. Я не думаю, что просто проверка подключения к Интернету является достаточным ответом, и я также думаю, что пинг службы вручную, прежде чем делать какие-либо запросы, является излишне тупым способом обнаружения ошибки. Кажется, что результаты запроса должны возвращаться пустыми, если произошла ошибка, но код никогда не заходит так далеко. Я что-то пропустил?
Обновить: Похоже, что приложение также аварийно завершит работу, если я успешно подключусь к службе, но таблица не была создана. Опять же, нет возможности обнаружить этот сценарий с помощью API, который я могу найти.
Задача ещё не решена.