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

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

2014-07-03 十有三 0 浏览:9094 .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属性无效导致无法匿名访问控制器的问题

相关文章
  • ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
  • .NET 使用HttpWebRequest 伪造Request.UrlReferrer
  • ASP.NET MVC 页面静态化操作的思路
  • Visual Studio Community 2013英文版安装中文语言包步骤
  • 解决Visual Studio Community 2013中文语言包安装失败导致无法使用的问题
  • ASP.NET MVC Compare ErrorMessage 无效导致无法显示自定义错误信息

文章分类

.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重构重命名的快捷键

推荐文章

  • HTTP 错误 404.17 - Not Found请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
  • IIS8通过ARR和URL重写模块实现不同站点之间的POST请求重写
  • 骑马与砍杀 无限箭枝/作弊修改箭枝数量/调整各种箭枝数量的方法
  • hostease的windows虚拟机机如何添加MIME类型?
  • Win10家庭版如何隐藏Administrator内置管理员帐户-没有组策略也没有本地用户和组

友情链接

  • Passingwind的博客
  • 码友网

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