使用PING的内部网站的状态

时间:2013-05-20 13:01:13

标签: asp.net vb.net visual-studio-2010 sql-server-2008

下午全部,

在对以下方法使用的最佳方法提出一些建议之后。

我是.net的新网站,并且正在开发一个Asp.net网页,我只是通过ping命令列出一些内部网站并概述其状态(在线/离线)。这是当前的;通过单击按钮激活。

我需要设置这个开发网页,以便它在早上7点的某个特定时间自动运行,然后通过电子邮件通知用户组这些项目的状态。

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

我想我可以在SQL 2008中创建一个预定的作业,找到一种方法将数据填充到数据库中,在我的网站中使用这些数据并将其显示为gridview或其他东西。并且要么让SQL作业或网站向一组用户发送这些内部网站的状态。

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

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

此致 打赌。

2 个答案:

答案 0 :(得分:0)

虽然实现起来相当简单,但我不认为ping命令在你想要实现的目标的上下文中是有用的。

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

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

例如:

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。你也应该试一试..抓住电话。如果它出错,那么您就知道服务器完全脱机。如果页面返回,但包含“错误”或其他内容,那么您知道服务器已启动但应用程序已关闭。

答案 1 :(得分: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;
}