/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

(译)在 ASP.NET中使用 XML-RPC 进行ping

2014-07-03 十有三 0 浏览:9128 .NET技术 ASP.NET

译自:http://blog.madskristensen.dk/post/Ping-using-XML-RPC-in-ASPNET.aspx

备注:XML-RPC的全称是XML Remote Procedure Call,即XML(标准通用标记语言下的一个子集)远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。

许多博客都能在有新内容创建或者内容有更新时,向各种Ping服务发送Ping请求,例如 Ping-o-Matic, Feedburner 和Technorati。但是ping这些服务并不只是博客独享的好处。几乎所有的网站都可以用这个技术来定期更新网站的内容。

所有的这些服务都使用XML-RPC并且使用其相同的规范和格式,所以你可以写一个ping类并且用来添加任意的Ping服务的URL地址。我已经写了一个可以在任意 ASP.NET 应用程序中使用的简单静态ping类

代码(使用XML-RPC发送 ping 所需要的三个方法):

        /// <summary>
        /// 发送一个PING到各类PING服务中
        /// </summary>
        public static void Send()
        {
            //这个地址是百度的PING服务地址:http://ping.baidu.com/ping/RPC2
            Execute("http://ping.baidu.com/ping/RPC2");
            //这个谷歌的PING服务地址:http://blogsearch.google.com/ping/RPC2
            Execute("http://blogsearch.google.com/ping/RPC2");
        }
      
        /// <summary>        
        /// 创建一个WEB请求并使用流传入XML-RPC
        /// </summary>
        /// <param name="url">ping服务的地址</param>
        private static void Execute(string url)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "text/xml";
                request.Timeout = 3000;
                AddXmlToRequest(request);
                request.GetResponse();
            }
            catch (Exception)
            {
                // 添加错误日志.
            }
        }

        /// <summary>
        /// 添加XML内容到WEB请求中。 XML格式必须为标准格式
        /// XML通过XML-RPC发送请求
        /// </summary>
        /// <param name="request"></param>
        private static void AddXmlToRequest(HttpWebRequest request)
        {
            Stream stream = (Stream)request.GetRequestStream();
            using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.ASCII))
            {

                writer.WriteStartDocument();
                writer.WriteStartElement("methodCall");

                /*此处传入要调用的方法名!*/
                writer.WriteElementString("methodName", "weblogUpdates.ping");
                writer.WriteStartElement("params");
                writer.WriteStartElement("param");

                /*这里传入的是你网站的名字*/
                writer.WriteElementString("value", "十有三");
                writer.WriteEndElement();
                writer.WriteStartElement("param");

                /*这里的URL地址传入的是你的网站主域名地址(不要传入更新的页面!)*/
                writer.WriteElementString("value", "https://shiyousan.com");

                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
            }
        }

下载上面这个类(这里指上面的三个方法)并把它放到 App_Code 文件夹里或一个类库里。然后在你 ASP.NET 程序中的任何位置你都像下面代码那样通过调用Send方法来使用这个ping类:

PingService.Send();

由于在ping各种各样的服务时可能要花费一些时间,因此你也许可以考虑下使用异步调用。就这样,现在你有一个使用 XML-RPC 来ping各种服务的类了。


作者:十有三

出处:https://shiyousan.com/post/635399409047938900

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 解决网站出现GET .woff 404 (Not Found)的问题
  • 下一篇: 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题

相关文章
  • .NET项目在生成时如何将静态资源文件复制到输出目录
  • Discuz!NT Flash无法上传头像,点击上传后无任何反应
  • ChinaPay.dll 64位系统导致应用程序池崩溃,异常代码: 0xc0000005
  • 修改Discuz!NT源码出现'List' is an ambiguous reference(即不明确的引用)错误
  • 解决ASP.NET“从客户端***中检测到有潜在危险的 Request.Form值。”错误
  • ASP.NET MVC 统一化自定义异常处理方案的选择

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • MongoDB在Windows Server 2012 R2中的安全部署
  • 记录MongoDb连接错误System.TimeoutException: A timeout occured after 30000ms selecting a server
  • Visual Studio 2017 如何打开调试的诊断工具
  • 解决Windows Server 2012 R2出现"帐户名与安全标识间无任何映射"错误
  • IE11 Exception in window.onload: Error: An error has ocurredJSPlugin.3005

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号