当前位置:   article > 正文

基于C#的WEB服务器运行状态监测程序_c# webclient 服务 状态码

c# webclient 服务 状态码

每天监测网站是否正常运行,之前是一个一个打开,现在写一个程序来监测。

步骤1.将文件配成XML格式方便读写,相对于数据库来说已操作。

XmlDocument dom = new XmlDocument();
            dom.Load(@"D:\ServerList.xml");
            foreach (XmlElement ServerC in dom.DocumentElement.ChildNodes)
            {
                string ID = ServerC.SelectSingleNode("ID").InnerText;
                string Name = ServerC.SelectSingleNode("Name").InnerText;
                string IP = ServerC.SelectSingleNode("IP").InnerText;
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

文件xml格式:其中encoding=”GB2312”,GB2312是一种可以识别中文的编码方式,不然会报如下错误

这里写图片描述

下图是正确的xml格式

这里写图片描述

步骤2:通过IP字段做为url去请求HttpWebRequest,查看返回的网站状态HttpStatusCode(此为枚举类型)。

字段名说明
Continue指示客户端可能继续其请求。
OK指示请求成功,且请求的信息包含在响应中。 这是最常接收的状态代码。
Created指示请求导致在响应被发送前创建新资源
Accepted指示请求已被接受做进一步处理
UseProxy指示请求应使用位于 Location 头中指定的URI 的代理服务器
BadRequest如果没有其他适用的错误,或者不知道准确的错误或错误没有自己的错误代码,则发送

此外还要很多的状态码,请查阅CSDN

  try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                if (resp.StatusCode == HttpStatusCode.OK)
                {
                    resp.Close();
                    return "程序运行中......";
                }
            }
            catch (WebException e)
            {
                return e.ToString() ;
            }
            return "程序已终止";
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在运行时会出现如下错误代码:401

这里写图片描述

在网上找了一下解决方案,原因是:请求第一个IP是本地IP,需要用户认证才能登录。解决方法如下,将用户电脑登录名和密码,赋值给NetworkCredential。

 NetworkCredential d = new NetworkCredential("USERNAME", "password");// USERNAME电脑登录名,password登录密码

                req.Credentials = d;
  • 1
  • 2
  • 3

完整代码如下:

 protected void Page_Load(object sender, EventArgs e)
        {

            XmlDocument dom = new XmlDocument();
            dom.Load(@"D:\ServerList.xml");
            foreach (XmlElement ServerC in dom.DocumentElement.ChildNodes)
            {
                string ID = ServerC.SelectSingleNode("ID").InnerText;
                string Name = ServerC.SelectSingleNode("Name").InnerText;
                string IP = ServerC.SelectSingleNode("IP").InnerText;
                HttpContext.Current.Response.Write(ID + "、<a href=" + IP + " target='_blank'>" + Name + "</a>" + "|" + CheckUrlVisit(ServerC.SelectSingleNode("IP").InnerText) + " <br>");
            }

        }
        public string CheckUrlVisit(string url)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                NetworkCredential d = new NetworkCredential("USERNAME", "password");//远程服务器返回错误 (401) 未经授权 
                req.Credentials = d;
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                if (resp.StatusCode == HttpStatusCode.OK)
                {
                    resp.Close();
                    return "程序运行中......";
                }
            }
            catch (WebException e)
            {
                return e.ToString();
            }
            return "程序已终止";

        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

运行结果如下:

这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/726569
推荐阅读
相关标签
  

闽ICP备14008679号