• 优化DOTTEXT之三:完善Trackback


    TRACKBACK是BLOG的一项重要功能,最近在到一些文章说TRACKBACK快要死了。我觉得TRACKBACK的最大障碍是标准问题。很多BLOG SITE并没有遵守TRACKBACK的标准,(标准的内容http://www.movabletype.org/docs/mttrackback.html

    在中国连http://www.blogchinese.comhttp://www.bokee.com/这样的大型网站也没有遵守此标准,TRACKBACK应用不畅也是理所当然的了。

    幸运的是DOTTEXT遵守了这一标准,相关类是:

    Dottext.Framework.Tracking.TrackBackNotificationProxy:发送TRACKBACK

    Dottext.Framework.Tracking.TrackBackHandler:接收PING过来的TRACKBAC

    CNBlogsDottext10Beta2版本中,TRACKBACK功能被屏蔽掉了,原因可能是因为很多人安装成功后,在提交包含引用链接的POSTS时,出现错误:

     将截断字符串或二进制数据

    其实这是因为发送TRACKBACK的关键方法:SendPing(string trackBackItem, string parameters)里,发送字节流时按照ASCII码的长度来发送,当PARAMETERS中包含中文时,就会出错,解决方法是转换成UTF-8发送,下面是我修改过后的代码:

      private void SendPing(string trackBackItem, string parameters)
      {

       HttpWebRequest request = BlogRequest.CreateRequest(trackBackItem);
       request.Method = "POST";

       request.ContentType = "application/x-www-form-urlencoded";
       request.KeepAlive = false;

       byte [] buff = Encoding.GetEncoding("UTF-8").GetBytes(parameters);     

       request.ContentLength = buff.Length;

       Stream reqStream = null;
       try
       {
        reqStream = request.GetRequestStream();

        reqStream.Write(buff, 0, buff.Length);
       }
       catch(Exception e)
       {
        Logger.LogManager.CreateExceptionLog(e,"SendPing Exception");
       }
       finally
       {
        reqStream.Close();
       }


    下一节我将分析一下DOTTEXT在TRACKBACK时的流程,并对改善方法提供一些建议

  • 相关阅读:
    JS弹出层可拖拽
    DWZ搭建页面快速入门笔记
    JQuery 选择器总结
    最新身份证验证
    centos7磁盘扩容
    vue中使用vueamap(高德地图)
    后台数据格式有问题,更改数据格式
    《JavaScript高级程序设计(第3版)》问题收集
    slice()、substr()、substring()的结果
    【SQL】统计数据过程中利用Union去重
  • 原文地址:https://www.cnblogs.com/jasononline/p/767222.html
Copyright © 2020-2023  润新知