2013-04-03 34 views
1

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

我可以用什么来代替Ping来控制Azure中的网站?如何?

+0

ping是如何控制是否启动或关闭的东西? Pinging可能会告诉你,网站正在运行的虚拟机已启动,但这是“只读”操作,不能控制任何内容。 – jlew

+0

我想听听你的建议,而不是Ping,这就是为什么我问我的问题 – wallace740

+0

你的问题还不清楚。你想监视你的网站,或者实际控制它是否启动或关闭,或两者兼而有之? – jlew

回答

2

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

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

Thx @Fabrizio,我结束了我的回应,现在它继续工作;) – wallace740

2

我建议你把它放在你自己的基础设施之外。主要是因为ping'东西可以给你非常有限的信息。如果角色启动并正在运行,但是您的网站实际上正在崩溃并发生异常,该怎么办?如果你有多个角色实例,其中一个关闭了,你的ping请求没有说出任何错误?

使用类似Pingdom的:

http://www.pingdom.com

这将让你做一些事情,这可能是不可能的(或不容易)做自己的“点播服务”的解决方案。比如事务监控(类似于非常基本的用户界面测试,例如有用户登录和点击),多种警报方式(甚至是Twitter警报)以及多个不同的请求位置(它可能在英国工作,但它是否工作当从法国访问它?)。

像这样的服务是为了这个唯一目的而创建的。您需要确定何时认为自己的网站“正在”或“正在停止”。它是在什么时候响应ping的?是否当你的登录页面显示OK?当你的管理页面显示OK吗?

+0

Pingdom对于一个站点也是免费的(最后一次检查)。来自世界各地众多服务器的ping让您在MS中获得平均响应时间,并且在网站再次“停机”和“启动”时为您提供方便的电子邮件通知。他们还提供您的网站的月度报告。 – davidb

+0

值得注意的是,虽然你的论点是正确的,但在这种情况下它是错误的。您无法ping通Azure中的服务器,因为ICMP流量被Azure阻止。 –

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; 
    } 
+0

response.Close(); 这解决了我的问题 – wallace740

1

另一监控工具,它是更为复杂的是PRTG

它提供了许多监视器,并免费为您要监视许多传感器。

这样,您不仅可以监控网站的存在,还可以监控特定调用的Web服务是否返回SQL查询。可能性几乎是无止境的。