我写了一个Windows应用程序来ping我的网站,每5分钟来控制它现在是UP还是DOWN。它在我们的网络和我们的测试服务器上工作,但是我们的实时环境在Azure中,并且它不允许我ping该网站。如何在Azure中ping我的网站?
我可以用什么来代替Ping来控制Azure中的网站?如何?
我写了一个Windows应用程序来ping我的网站,每5分钟来控制它现在是UP还是DOWN。它在我们的网络和我们的测试服务器上工作,但是我们的实时环境在Azure中,并且它不允许我ping该网站。如何在Azure中ping我的网站?
我可以用什么来代替Ping来控制Azure中的网站?如何?
使用HttpWebRequest和HttpWebResponse并记住要处理您创建的对象。特别是HttpWebResponse的响应流。
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
using (Stream respStream = res.GetResponseStream())
{
respStream.ReadByte();
respStream.Close();
}
Thx @Fabrizio,我结束了我的回应,现在它继续工作;) – wallace740
我建议你把它放在你自己的基础设施之外。主要是因为ping
'东西可以给你非常有限的信息。如果角色启动并正在运行,但是您的网站实际上正在崩溃并发生异常,该怎么办?如果你有多个角色实例,其中一个关闭了,你的ping请求没有说出任何错误?
使用类似Pingdom的:
这将让你做一些事情,这可能是不可能的(或不容易)做自己的“点播服务”的解决方案。比如事务监控(类似于非常基本的用户界面测试,例如有用户登录和点击),多种警报方式(甚至是Twitter警报)以及多个不同的请求位置(它可能在英国工作,但它是否工作当从法国访问它?)。
像这样的服务是为了这个唯一目的而创建的。您需要确定何时认为自己的网站“正在”或“正在停止”。它是在什么时候响应ping
的?是否当你的登录页面显示OK?当你的管理页面显示OK吗?
Pingdom对于一个站点也是免费的(最后一次检查)。来自世界各地众多服务器的ping让您在MS中获得平均响应时间,并且在网站再次“停机”和“启动”时为您提供方便的电子邮件通知。他们还提供您的网站的月度报告。 – davidb
值得注意的是,虽然你的论点是正确的,但在这种情况下它是错误的。您无法ping通Azure中的服务器,因为ICMP流量被Azure阻止。 –
我用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;
}
response.Close(); 这解决了我的问题 – wallace740
ping是如何控制是否启动或关闭的东西? Pinging可能会告诉你,网站正在运行的虚拟机已启动,但这是“只读”操作,不能控制任何内容。 – jlew
我想听听你的建议,而不是Ping,这就是为什么我问我的问题 – wallace740
你的问题还不清楚。你想监视你的网站,或者实际控制它是否启动或关闭,或两者兼而有之? – jlew