定时检测网站运行状态
来源:互联网 发布:精准扶贫大数据平台app 编辑:程序博客网 时间:2024/06/01 19:59
小编最近遇到了一个问题,网站发布之后,及时获取网站的运行状态
可以把一个网站的很多页面,或者说很多网站的基本信息,配置在XML中
通过,读取XML文件,定时的检测网站的运行状态,记录数据库日志,如果出现问题,第一时间邮件或者其他方式,通知网站维护人员
新建控制台应用程序
效果
后台代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Text.RegularExpressions;namespace ConsoleApplication1{ class Program { #region 主函数 public static void Main(string[] args) { // 获取输入要访问的网址 string url=null; Console.Write("请输入要访问的网址:"); url = Convert.ToString(Console.ReadLine()); // 验证网址的格式 bool result=judgeReg(url); // 网址的格式 string urlFormat = "网址的格式正确。"; if (result==false) { urlFormat = "网址的格式不正确!"; Console.WriteLine(urlFormat); Console.ReadKey(); return; } // 检测网站的状态 string status = judgeStatus(url); // http的状态码 string errorCode = status.Substring(0, 3); // 错误信息 string errorMessage = status.Substring(3); // 错误详情 string detailsMessage = judegDetails(errorCode); //输出 Console.WriteLine(urlFormat); Console.WriteLine(errorCode); Console.WriteLine(errorMessage); Console.WriteLine(detailsMessage); Console.ReadKey(); } #endregion #region 验证网址的格式 /// <summary> /// 验证网址的格式 /// </summary> /// <param name="url"></param> /// <returns></returns> public static bool judgeReg(string url) { bool result=false; if (url != null && url != "") { var strRegex = @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&$%\$#\=~])*$"; Regex re=new Regex(strRegex); if (re.IsMatch(url)){ result=true; } } return result; } #endregion #region 检测网页的状态 /// <summary> /// 检测网页的状态 /// </summary> /// <param name="url">网址URL</param> /// <returns></returns> public static string judgeStatus(string url) { // http的状态码,错误信息 int errorCode = 0; string errorMessage = null; try { WebRequest request = WebRequest.Create(url); request.Method = "HEAD"; request.Timeout = 1000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //StatusCode为枚举类型,200为正常 //其他输出为异常,需要转为int型,才会输出状态码 errorCode = Convert.ToInt32(response.StatusCode); errorMessage = response.StatusCode.ToString(); response.Close(); } catch (WebException ex) { if (ex.Response != null) { errorCode = Convert.ToInt32(((HttpWebResponse)ex.Response).StatusCode); errorMessage = ((HttpWebResponse)ex.Response).StatusCode.ToString(); } else { errorCode = 000; errorMessage = "网站不存在!"; } } return errorCode + errorMessage; } #endregion #region 检测网址的详细信息 /// <summary> /// 检测网址的详细信息 /// </summary> /// <param name="errorCode">错误代码</param> /// <returns></returns> public static string judegDetails(string errorCode) { // 错误详情 string detailMessage=""; int code=Convert.ToInt32(errorCode); // 判断状态码 switch(code) { case 000: detailMessage="网址不存在。"; break; case 100: detailMessage = "继续,请求者应当继续提出请求。"; break; case 101: detailMessage = "切换协议,请求者已要求服务器切换协议,服务器已确认并准备进行切换。"; break; case 200: detailMessage = "成功,服务器已成功处理了请求。"; break; case 201: detailMessage = "已创建,请求成功且服务器已创建了新的资源。"; break; case 202: detailMessage = "已接受,服务器已接受了请求,但尚未对其进行处理。"; break; case 203: detailMessage = "非授权信息,服务器已成功处理了请求,但返回了可能来自另一来源的信息。"; break; case 204: detailMessage = "无内容,服务器成功处理了请求,但未返回任何内容。"; break; case 205: detailMessage = "重置内容,服务器成功处理了请求,但未返回任何内容。"; break; case 206: detailMessage = "部分内容,服务器成功处理了部分 GET 请求。"; break; case 300: detailMessage = "多种选择,服务器根据请求可执行多种操作。"; break; case 301: detailMessage = "永久移动,请求的网页已被永久移动到新位置。"; break; case 302: detailMessage = "临时移动,服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。"; break; case 303: detailMessage = "查看其他位置,当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。"; break; case 304: detailMessage = "未修改,自从上次请求后,请求的网页未被修改过。"; break; case 305: detailMessage = "使用代理,请求者只能使用代理访问请求的网页。"; break; case 307: detailMessage = "临时重定向,服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。"; break; case 400: detailMessage = "错误请求,服务器不理解请求的语法。"; break; case 401: detailMessage = "身份验证错误,此页要求授权。"; break; case 403: detailMessage = "禁止,服务器拒绝请求。"; break; case 404: detailMessage = "未找到,服务器找不到请求的网页。"; break; case 405: detailMessage = "方法禁用,禁用请求中指定的方法。"; break; case 406: detailMessage = "不接受,无法使用请求的内容特性响应请求的网页。"; break; case 407: detailMessage = "需要代理授权,指定请求者必须授权使用代理。"; break; case 408: detailMessage = "请求超时,服务器等候请求时发生超时。"; break; case 409: detailMessage = "冲突,服务器在完成请求时发生冲突。"; break; case 410: detailMessage = "已删除,请求的资源永久删除后,服务器返回此响应。"; break; case 411: detailMessage = "需要有效长度,服务器不接受不含有效内容长度标头字段的请求。"; break; case 412: detailMessage = "未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。"; break; case 413: detailMessage = "请求实体过大,服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。"; break; case 414: detailMessage = "请求的 URI 过长,请求的 URI(通常为网址)过长,服务器无法处理。"; break; case 415: detailMessage = "不支持的媒体类型,请求的格式不受请求页面的支持。"; break; case 416: detailMessage = "请求范围不符合要求,如果页面无法提供请求的范围,则服务器会返回此状态码。"; break; case 417: detailMessage = "未满足期望值,服务器未满足”期望”请求标头字段的要求。"; break; case 500: detailMessage = "服务器内部错误,服务器遇到错误,无法完成请求。"; break; case 501: detailMessage = "尚未实施,服务器不具备完成请求的功能。"; break; case 502: detailMessage = "错误网关,服务器作为网关或代理,从上游服务器收到无效响应。"; break; case 503: detailMessage = "服务不可用,服务器目前无法使用(由于超载或停机维护)。"; break; case 504: detailMessage = "网关超时,服务器作为网关或代理,但是没有及时从上游服务器收到请求。"; break; case 505: detailMessage = "HTTP 版本不受支持,服务器不支持请求中所用的 HTTP 协议版本。"; break; default: detailMessage = "网页不存在!"; break; } return detailMessage; } #endregion }}
这里,可以检测网站的地址是否正确,以及网站当前的运行状态
返回状态码和状态码的描述信息
阅读全文
0 0
- 定时检测网站运行状态
- Ping命令检测网站运行状态
- 网站运行状态检测工具
- C#检测进程运行状态
- Tomcat 运行状态检测脚本
- 定时器TimerTask:定时检测用户在线状态
- 定时检测服务状态脚本实现
- Linux Shell 之定时检测Tomcat运行
- Linux Shell 之定时检测Tomcat运行 .
- PHP监控网站运行状态
- 检测Tomcat运行状态,自动重启
- windows下检测软件运行状态。脚本
- 利用定时任务实现嵌入式下网卡状态检测
- C#编程:网络连接状态的定时检测
- crontab根据定时检测程序状态,重启程序
- PHP:短信监控网站运行状态
- quartz(三):利用quartz定时执行运行环境检测
- oracle job 定时,启动,停止,察看状态。运行脚本
- 文章标题
- 注册事件响应函数
- EventBus使用详解
- 数据类型
- AbstractQueuedSynchronizer源码剖析(五)- 响应中断的共享锁
- 定时检测网站运行状态
- FileReader采用的默认编码
- Handler深入解析(一)
- 抽象类和接口的总结
- 冒泡排序算法
- 这是我的博客
- 小知识Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别
- 使用litepal数据库框架出现表未创建成功
- java的动态代理机制详解