Cómo saber si estoy conectado a Internet con C#

No es preciso saber si una computadora esta conectada a Internet con C# pero podemos saber si efectivamente se realizo la conexión a un sitio especifico y deducir si la computadora esta efectivamente conectada o no.

Podemos verificar un par de cosas que si bien no nos aseguran que se realice una conexión efectiva si pueden ayudarnos a verificarla.

Primero podemos revisar la conexión a la Red local, si no esta conectada entonces no hay Internet, de lo contrario solo podemos asegurar que esté conectada al módem por ejemplo mas no que tenga salida a Internet.

string Estado = "";
bool RedActiva = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
 
if (RedActiva)
     Estado = "Se estableció conexión con la red local";
else
     Estado = "No está conectado a la red";

Ahora si estamos conectados a la Red podemos enviar un ping a una pagina en Internet para asegurar la conexión.

string Estado = "";
System.Uri Url = new System.Uri("https://www.google.com/");

System.Net.WebRequest WebRequest;
WebRequest = System.Net.WebRequest.Create(Url);
System.Net.WebResponse objetoResp;

try
{
     objetoResp = WebRequest.GetResponse();
     Estado = "Se establecio conexión a internet corretamente.";
     objetoResp.Close();
}catch (Exception e)
{
     Estado = "No se pudo conectar a Internet " + e.Message;
}
WebRequest = null;

Si se realiza correctamente podemos asegurar que si hay conexión, de lo contrario tenemos que esperar a que entre al catch y eso puede tardar unos segundos.

No se puede hacer conexión con todos los sitios por la configuración de cada uno de ellos, con google.com si se puede y es el que mas se usa para estos casos, de lo contrario puede arrojar un mensaje como este

No se puede crear un canal seguro SSL/TLS.

Pero eso no asegura que la conexión fue fallida.