2013-05-20 14 views
0

下午所有,通过使用PING的内部网站的状态

就在下面的最佳方法的建议之后。

我是新来的ISH .net和在发展的Asp.net网页,我只是用ping命令列出了一些内部网站,并概述了他们的状态(在线/离线)。这是当前的;通过点击按钮激活。

我需要设置这个developemt网页,因此它会自动在上一个上午的特定时间运行,说为了讨论早上7点,并通过电子邮件通知用户组这些项目的状态。

我以前使用过Microsoft Visual Studio(VB)2010,可以创建简单的网络工作,可以从SQL 2008连接/提取/更新数据。我也有一些在SQL中创建预定作业的经验,但并不多。

我想我可能会在2008年SQL创建计划作业,找到一种方法来将数据填充到数据库中,在我的网站上使用这些数据并显示它一个GridView或什么的。并且要么通过SQL作业或网站向一组用户发送这些内部网站的状态。

有谁知道我是否可以在.net中完成上述操作?我能够编写某种脚本吗?或者安排网页在指定的时间运行?

我不是百分之百确定解决这项工作的最佳方法,而且我的经验有限。任何人都可以提出有关如何完成上述任何最佳方法的想法。

问候 赌注。

+1

你想知道的服务器是否在线,或者如果网站有哪些?它们不是一回事,ping只会告诉你服务器,而不是网站。 –

+0

嗨Fredrik非常感谢您的帮助。目前我的btnPing_click已经在我们的两个网站上进行了测试,这些网站位于我们的生产箱中,它只是使用该箱的IP地址来检查生产是否正常运转。它是一个正确的方向的开始,但我真的应该看看寻找一种方法来ping个人网站。有什么建议么? –

+1

目前还不完全清楚你的目标是什么,但如果你的目的只是为了看看服务器或应用程序是否正在运行,那么你可能希望查看现有的系统管理/监控应用程序,而不是从头开始编写自己的目标。例如,[Nagios](http://www.nagios.org/)是非常普遍的。 – Pondlife

回答

0

虽然相当容易实现,我不相信一个ping命令是在你想达到什么样的上下文中。

正如Fredrik指出的那样,ping只表示服务器可用。它没有声明个人网站是否在该服务器上正常工作。

如果我这样做,我会创建一个运行频繁的服务。该服务会向网站发出获取请求,对内容进行一些解析以确保返回的内容是预期的,并在数据库中更新记录,说明连接时间和状态(上/下)。

例如:

public String CheckSite(String postLocation) { 
    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postLocation); 
    // Setting the useragent seems resolves certain issues that *may* crop up depending on the server 
    httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
    httpRequest.KeepAlive = false; 
    httpRequest.Method = "GET"; 

    using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse()) { 
     using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream())) { 
      result = reader.ReadToEnd(); 
     } // using reader 
    } // using httpResponse 

    return result; 
} 

这个简单的调用会从服务器加载页面。从那里你可以解析,看看你是否有像“错误”或你有什么词。如果它看起来不错,那么你可以报告该网站已经启动。

我知道上面是C#,但你应该能够在需要时轻松地将其转换成VB。你也应该试一试。如果它出错,那么你知道服务器是完全离线的。如果页面返回,但包含“错误”或其他内容,那么您知道服务器已启动,但应用程序已关闭。

0

pesronally。 。 。我认为最好的解决方法是:(未经测试)

public String CheckSite(String postLocation) { 
    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postLocation); 
    // Setting the useragent seems resolves certain issues that *may* crop up depending on the server 
    httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
    httpRequest.KeepAlive = false; 
    httpRequest.Method = "GET"; 

    using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse()) { 
     if(httpResponse.StatusCode != {check for valid status codes here}) 

{// 做基于无效响应东西。 } } //使用的HttpResponse

return result; 
}