如何在Azure中ping我的网站?

时间:2013-04-03 13:48:53

标签: winforms azure ping

我写了一个Windows应用程序,每5分钟ping一次我的网站,以控制它现在是UP还是DOWN。它在我们的网络和我们的测试服务器中工作,但我们的实时环境是在Azure中,它不允许我ping该网站。

我可以使用什么代替Ping来控制Azure中的网站?怎么样?

4 个答案:

答案 0 :(得分:2)

我建议你把它放在你自己的基础设施之外。主要是因为ping某事物无论如何都会给你非常有限的信息。如果角色已启动并正在运行,但您的网站实际上因异常而崩溃,该怎么办?如果您的角色有多个实例,其中一个实例已关闭,并且您的ping请求没有说错,该怎么办?

使用像Pingdom这样的东西:

http://www.pingdom.com

它允许你做一些事情,这可能是不可能的(或不容易)与你自己的'内部'解决方案。例如事务监控(类似于非常基本的UI测试,有用户登录和点击),多种警报方式(甚至是Twitter警报)和多个不同的请求位置(它可能在英国有效,但它是否有效从法国访问时?)。

此类服务仅为此目的而创建。您需要定义何时相信您的网站“上升”或“下降”。它是否响应ping的时候?是否在您的登录页面显示正常时?您的管理页面显示正常吗?

答案 1 :(得分:2)

使用HttpWebRequest和HttpWebResponse并记住处理您创建的对象。特别是HttpWebResponse的响应流。

HttpWebResponse res = req.GetResponse() as HttpWebResponse;
using (Stream respStream = res.GetResponseStream())
{
  respStream.ReadByte();
  respStream.Close();
} 

答案 2 :(得分:1)

我使用了HttpWebRequest和HttpWebResponse而不是Ping,但是经过3次程序因某种原因冻结了。我把所有东西放在一个try ... catch块中,但它也没有抛出任何异常,只是冻结。

 try
 {
      var myRequest = (HttpWebRequest)WebRequest.Create(url);
      var response = (HttpWebResponse)myRequest.GetResponse(); //After third time it freezes here

      if (response.StatusCode == HttpStatusCode.OK)
      {
          labelResult.Text += TxtIPAddress.Text + " is Available " + " " + System.DateTime.Now.ToString() + " " + Environment.NewLine;
      }
      else
      {                    
          labelResult.Text += TxtIPAddress.Text + " is Unavailable " +  System.DateTime.Now.ToString() + " " + Environment.NewLine;
      }
  }
  catch (Exception ex)
  {             
      labelResult.Text += TxtIPAddress.Text + " is Unavailable " + System.DateTime.Now.ToString() + " " + Environment.NewLine;
  }

答案 3 :(得分:1)

另一个更复杂的监控工具是PRTG

它提供了许多监视器,并且对于您希望监视的许多传感器是免费的。

通过这种方式,您不仅可以监控网站的存在,还可以监控特定调用的Web服务是否返回SQL查询。可能性几乎是无穷无尽的。