我有一个在我们的服务器上运行的每小时诊断检查,其中包括检查服务器是否具有互联网连接。
以下是我用来ping网址的代码(来自http://stackoverflow.com/questions/11800958/using-ping-in-c-sharp),但它会在https://www.facebook.com
和https://www.google.com
上产生间歇性结果。实际上,在专用托管VM和单独的Azure VM上都会遇到糟糕的结果:
public static bool PingHost(string nameOrAddress)
{
if (nameOrAddress.IsEmpty())
return false;
bool pingable = false;
Ping pinger = new Ping();
try
{
var hostNameOrAddress = nameOrAddress.Replace("http://", "").Replace("https://", "")
.Replace("/", "");
PingReply reply = pinger.Send(hostNameOrAddress);
pingable = reply.Status == IPStatus.Success;
}
catch
{
return false;
// Discard PingExceptions and return false;
}
return pingable;
}
有什么问题是我有其他诊断检查来测试其他第三方网址,并且它们显示正常。
检查一般互联网连接的更可靠方法是什么?