优化DOTTEXT之三:完善Trackback
TRACKBACK是BLOG的一項重要功能,最近在到一些文章說TRACKBACK快要死了。我覺得TRACKBACK的最大障礙是標(biāo)準(zhǔn)問題。很多BLOG SITE并沒有遵守TRACKBACK的標(biāo)準(zhǔn),(標(biāo)準(zhǔn)的內(nèi)容http://www.movabletype.org/docs/mttrackback.html)
在中國連http://www.blogchinese.com,http://www.bokee.com/這樣的大型網(wǎng)站也沒有遵守此標(biāo)準(zhǔn),TRACKBACK應(yīng)用不暢也是理所當(dāng)然的了。
幸運的是DOTTEXT遵守了這一標(biāo)準(zhǔn),相關(guān)類是:
Dottext.Framework.Tracking.TrackBackNotificationProxy:發(fā)送TRACKBACK
Dottext.Framework.Tracking.TrackBackHandler:接收PING過來的TRACKBAC
CNBlogsDottext10Beta2版本中,TRACKBACK功能被屏蔽掉了,原因可能是因為很多人安裝成功后,在提交包含引用鏈接的POSTS時,出現(xiàn)錯誤:
?將截斷字符串或二進(jìn)制數(shù)據(jù)
其實這是因為發(fā)送TRACKBACK的關(guān)鍵方法:SendPing(string trackBackItem, string parameters)里,發(fā)送字節(jié)流時按照ASCII碼的長度來發(fā)送,當(dāng)PARAMETERS中包含中文時,就會出錯,解決方法是轉(zhuǎn)換成UTF-8發(fā)送,下面是我修改過后的代碼:
??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();
???}
下一節(jié)我將分析一下DOTTEXT在TRACKBACK時的流程,并對改善方法提供一些建議
轉(zhuǎn)載于:https://www.cnblogs.com/ddwinter/archive/2006/03/01/340439.html
總結(jié)
以上是生活随笔為你收集整理的优化DOTTEXT之三:完善Trackback的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息 按顺序打印commit_提高效率的
- 下一篇: 面试题 gety() getTop()