我目前正在制作一个返回不同结果的信息中心。其中一个是三个网站的状态和当前的互联网连接。我最初使用knockout.js ping每个站点,但我发现了一个更好的方法。现在我只是使用ajax调用mvc控制器来恢复我需要的结果。
[HttpPost]
public JsonResult webSiteAvailable(string url)
{
try
{
var result = false;
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(url);
System.Diagnostics.Stopwatch timer = new Stopwatch();
timer.Start();
httpReq.AllowAutoRedirect = false;
httpReq.Proxy.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();
timer.Stop();
TimeSpan timeTaken = timer.Elapsed;
if (httpRes.StatusCode == HttpStatusCode.NotFound)
{
result = false;
}
else
{
result = true;
}
return Json(new { status = result, code = httpRes.StatusDescription.ToString(), time = timeTaken.TotalMilliseconds.ToString() });
}
catch (WebException ex)
{
return Json(new { status = false, code = ex.Message.ToString() });
}
catch (Exception ex)
{
return Json(new { status = false, code = ex.Message.ToString() });
}
}
所以我的问题是,有没有更好的方法来测试互联网连接?我知道检查www.google.co.uk响应是否确实测试了连接,但必须有更好的方法来执行此操作。感谢您的任何建议。