Я знаю, что это большая дискуссия о том, как проверить, доступно ли подключение к Интернету для устройства.
Я пробовал Ping, WebClient и HTTPClient.
Я также использую Xamarin Essentials и подключаемый модуль.
Все это работает, просто сделайте запрос в Google или на сервер по вашему выбору, и вы получите ответ или нет.
Вы также можете установить тайм-аут на 2 секунды и т. Д.
Но теперь я попал в ситуацию, когда я подключен к WIFI, НО сам WIFI не имеет активного подключения к Интернету.
Так что все, о чем я писал, больше не работало. Проблема в том, что тайм-аут будет как-то игнорироваться. Может быть, ошибка в .net? Я не знаю.
Теперь я нашел одну последнюю вещь:
try
{
var request = (HttpWebRequest)WebRequest.Create("https://www.google.com");
request.KeepAlive = false;
request.Timeout = 2000;
using (var response = (HttpWebResponse)await request.GetResponseAsync())
{
if (response.StatusCode == HttpStatusCode.OK)
{
//Connection to internet available
return true;
}
else
{
//Connection to internet not available
return false;
}
}
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
return false;
}
}
catch (Exception e)
{
return false;
}
Это было единственное решение, где я получил исключение WebException, когда был достигнут тайм-аут 2 секунды.
Во всех других решениях я придерживался более 1 минуты до истечения времени ожидания. Кроме того, когда я установил его на 500 мс или что-то.
Кто-нибудь знал причину, по которой данный тайм-аут не достигается, например, другими методами?