0

下午所有,

就以下内容的最佳使用方法提出了一些建议。

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

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

我以前使用过 Microsoft Visual Studio (VB) 2010,可以创建简单的 Web 作品,将数据连接/提取/更新 SQL 2008。我也有一些在 SQL 中创建计划作业的经验,但经验不多。

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

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

我不能 100% 确定解决这项工作的最佳方法,而且我的经验有限。任何人都可以就如何完成上述内容提出任何最佳方法的想法。

问候赌注。

4

2 回答 2

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

于 2013-05-20T14:05:35.703 回答
0

个人。. . 我认为最优雅的解决方案是:(未经测试)

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;
}
于 2013-05-20T15:43:26.820 回答