Какое исключение выдает ReadBufferAsync, когда нет подключения к Интернету - PullRequest
0 голосов
/ 18 июня 2019

При получении данных из сети, как я могу узнать, не удалось ли мне подключиться? Я использую GetBufferAsync, который выдает ошибку, когда я вытаскиваю кабель Ethernet из компьютера.
Я не могу найти документацию по этой ошибке, и я не знаю, является ли это лучшим методом для использования. Я загружаю текстовый файл размером до 60 КБ. Не очень много данных.

Я занимаюсь разработкой в ​​Visual Studio 2019.

Приведенный ниже код загружает некоторые данные с www.google.com, в основном 0. Когда я отсоединяю кабель Ethernet, я получаю исключение в строке ReadBufferAsync. Я пытался перехватить определенные исключения: InvalidOperationException, HttpRequestException

Ошибка: 0x8002ee7 (десятичный 12007).
Текст: текст, связанный с этим кодом ошибки, не найден. Не удалось разрешить имя или адрес сервера.
InnerException: нуль

Документация MS https://docs.microsoft.com/en-us/windows/desktop/WinInet/wininet-errors не включает ошибку, которую я получаю, хотя мое исключение находится в правильном диапазоне (см. https://docs.microsoft.com/en-us/windows/desktop/Debug/system-error-codes--12000-15999-)

using System;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.Web.Http;


namespace ReadBufferAsyncTest
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.Loaded += MyProgram_Loaded;
        }

        private async void MyProgram_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                // Connecting to internet
                var uriBing = new Uri("http://www.google.com");
                var client = new HttpClient();
                IBuffer morseBuffer = await client.GetBufferAsync(uriBing);
                DataReader dataReader = DataReader.FromBuffer(morseBuffer);
                byte[] morseBytes = new byte[morseBuffer.Length];
                dataReader.ReadBytes(morseBytes);
            }
            catch(Exception ex)
            {
                return;      // breakpoint goes here
            }
        }
    }
}

Является ли полученная ошибка (0x80072ee7) ожидаемой ошибкой? Есть ли другие ошибки, чтобы искать? Каков наилучший способ обработки ошибок при ограниченном количестве документации?

(другое примечание: это лучший способ загрузить небольшой текстовый файл?)

1 Ответ

0 голосов
/ 19 июня 2019

как узнать, не удалось ли мне подключиться?

По вашему требованию вы можете проверить, доступен ли Интернет, прежде чем получать буфер через NetworkHelper.

// Detect if Internet can be reached
if (NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...