Quiero que mi programa en C# compruebe si un sitio web está en línea antes de la ejecución, ¿cómo haré que mi programa haga ping al sitio web y busque una respuesta en C#?¿Cómo verifica si un sitio web está en línea en C#?
Respuesta
Usted tiene uso System.Net.NetworkInformation.Ping
ver más abajo.
var ping = new System.Net.NetworkInformation.Ping();
var result = ping.Send("www.google.com");
if (result.Status != System.Net.NetworkInformation.IPStatus.Success)
return;
Ping no le dice si un sitio web está en línea, solo si su pila de red está respondiendo. Además, está pasando una URL HTML para hacer ping, lo que no sería legal. –
Esta es, de lejos, la mejor respuesta, y dado que la clase incluso se llama "Ping", es probablemente la respuesta más correcta también. Gracias por tu ayuda. Además, si alguien está leyendo esto en el futuro, aquí está el enlace al manual: http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx – Alper
En cuanto a mí, no funciona - arroja una excepción (cuando el host no está disponible) en lugar de simplemente manejarlo y devolver un valor IPStatus correspondiente – Laserson
La forma más simple que puedo pensar es algo así como:
WebClient webClient = new WebClient();
byte[] result = webClient.DownloadData("http://site.com/x.html");
DownloadData será una excepción si el sitio no está en línea.
Probablemente haya una forma similar de hacer ping al sitio, pero es poco probable que la diferencia se note a menos que esté revisando muchas veces por segundo.
No debería tener que descargar toda la página solo para verificar que el sitio está activo – BrokenGlass
El webclient funciona mejor para mí en lugar de la httpwebrequest, después de ejecutar el error 503, httpwebrequest sigue lanzando 503 mientras webclient está trabajando nuevamente. – bert
Un ping solo le dice que el puerto está activo, no le dice si realmente es un servicio web allí.
Mi sugerencia es realizar una solicitud HTTP HEAD contra la URL
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("your url");
request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
request.Method = "HEAD";
try {
response = request.GetResponse();
// do something with response.Headers to find out information about the request
} catch (WebException wex)
{
//set flag if there was a timeout or some other issues
}
Esto será en realidad no se ha podido recuperar la página HTML, pero le ayudará a averiguar el mínimo de lo que necesita saber. Lo siento si el código no se compila, esto está fuera de mi cabeza.
Perfecto. Por cierto, hay una const para "HEAD" para los que les importa. System.Net.WebRequestMethods.Http.Head. –
pequeña observación para el código de Digicoder y completo ejemplo de método de ping:
private bool Ping(string url)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3000;
request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
request.Method = "HEAD";
using (var response = request.GetResponse())
{
return true;
}
}
catch
{
return false;
}
}
if (!NetworkInterface.GetIsNetworkAvailable())
{
// Network does not available.
return;
}
Uri uri = new Uri("http://stackoverflow.com/any-uri");
Ping ping = new Ping();
PingReply pingReply = ping.Send(uri.Host);
if (pingReply.Status != IPStatus.Success)
{
// Website does not available.
return;
}
- 1. C# ¿Verifica si el enchufe está desconectado?
- 2. ¿Verifica si un NSMutableDictionary está vacío?
- 3. verifica si largeAddressAware está en efecto?
- 4. ¿Cómo verifica si la lista está en blanco?
- 5. ¿Cómo verifica si un archivo está abierto usando Perl?
- 6. ¿Cómo se verifica si un repositorio mercurial está limpio?
- 7. ¿Cómo sabe IIS si está sirviendo un sitio web o un proyecto de aplicación web?
- 8. ¿Cómo determinar si un sitio web está instalado en IIS7 con Powershell?
- 9. descargar un sitio web completo en C#
- 10. Verifica programáticamente si se está ejecutando syncdb
- 11. ¿Cómo alojar un sitio web JSP en un servidor web?
- 12. ¿Verifica si se está ejecutando un servicio de Windows?
- 13. ¿Verifica si existe un diseño en Rails?
- 14. ¿Cómo puedo saber si Flash está cargado en un sitio web?
- 15. ¿Cómo verifica si un widget tiene foco en Tkinter?
- 16. ¿Cómo verificar ASP.NET si el usuario está en línea?
- 17. ¿Cómo verifica si una fila está bloqueada para la actualización?
- 18. Medición en un sitio web
- 19. ¿Cómo verifica si la página actual usa SSL en ASP.Net?
- 20. Compruebe si el usuario está actualmente en línea (en vivo)
- 21. ¿Cómo verifica si existe un cierto índice en una tabla?
- 22. ¿Cómo verifica si un usuario lo está siguiendo mediante PHP, JS y/o API REST?
- 23. ¿Verifica si el usuario está desplazándose con el panel táctil?
- 24. ¿Cómo verifica en Linux con Python si todavía se está ejecutando un proceso?
- 25. Magento - ¿Verifica si hay un módulo instalado?
- 26. Administración del sitio web: ¿está integrado en el sitio web principal o en una sección separada?
- 27. ¿Cómo construir un sitio web en Node.js?
- 28. C# contraseña TextBox en un sitio web ASP.net
- 29. Verifica si existe proc almacenado en DB?
- 30. Cómo encontrar si un sitio web utiliza HSTS
tiene tanto ejemplos sincrónicas y asincrónicas en el cuadro [Clase] (Ping http://msdn.microsoft.com/en- us/library/system.net.networkinformation.ping.aspx) página en MSDN. – drew010
+1. Aprendió algo nuevo: D –
También puede usar la clase WebClient y solicitar un recurso o una url. Ping no necesariamente significa que el sitio web está en línea, a menos que solo quiera verificar que el servidor esté activo. – lahsrah