因此,我知道可以使用c#中的Ping.Send(字符串)ping服务器,但是可以ping特定的Web应用程序,而不是整个服务器。例如,有一个托管在其上的三个网站(a,b和c)的服务器。服务器IP为1.1.1.1。每个网站都有不同的端口。我如何检查网站a目前是否正在托管?
答案 0 :(得分:5)
只需向WebSite提出请求
private bool PingWebSite(string url)
{
try
{
WebRequest.Create(url).GetResponse();
return true;
}
catch
{
return false;
}
}
然后使用它
var isWebSiteWorking = PingWebSite("http://stackoverflow.com");
答案 1 :(得分:2)
我不会做GetResponse()因为,如果特定的Url返回1 GB的文件,这会阻止你的应用程序。只是提出头部请求应该足够或使用TcpClient。
async Task<Boolean> IsAvailable()
{
string url = "http://www.google.com";
try
{
using (var client = new HttpClient())
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, url);
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
response.Dump();
return true;
}
else
{
return false;
}
}
}
catch (Exception ex)
{
return false;
}
}