The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

產生 RSS Feed 時要記得加上 pubDate 欄位 ( RSS Toolkit )

若說到要利用 ASP.NET 處理 RSS 文件,我們幾乎都只使用 ASP.NET RSS Toolkit 來開發程式,不管是讀入 RSS 文件,或是提供 RSS Feed 都很方便使用,而且還支援強型別功能,讓你開發起來特別得心應手。

我們之前就有個案子用上了這個,且我們的工程師參考了 Using an ASHX handler to publish a feed 這篇文章進行開發,網站也已經上線好久了,我自己也有用 Google Reader 進行訂閱動作,似乎都沒什麼問題發生。

不過最近客戶卻反應,為什麼 RSS 的前三筆永遠是固定的三篇文章,我也很直覺的回他:「不可能吧,我都有用 Google Reader 在訂閱耶,而且每天都有收到新的訊息,以及最新三筆也都沒有固定啊。」

最後客��傳給我他的電腦畫面,此時才真相大白,正所謂:「有圖有真相

我的貼身e管家公眾訊息RSS

原來在 IE7 裡,預設的 RSS Reader 是以「日期」做排序依據,但是我 RSS 中所有的項目(item)都沒有設定 pubDate 欄位,導致 IE7 無法以日期進行排序,所以就改以其他條件進行排序,也就因為如此,客戶每次查看 RSS 的時候,永遠都是那幾筆在最上面。

在 CodePlex 上的範例中顯示 RSS 的每一個項目標籤如下:

<item>
    <title></title>
    <description></description>
    <link></link>
</item>

不過比較正確的定義,應該至少要包括 <pubDate> 標籤才對,否則就會遇到與我一樣的問題!

<item>
    <title></title>
    <description></description>
    <link></link>
    <pubDate></pubDate>
</item>

依據 RSS 2.0 Specification 中的定義,所有在 RSS 文件中出現的日期格式都必須以 RFC822: Standard for ARPA Internet Text Messages 中定義的日期時間規範呈現。

在 .NET 中要將 DateTime 格式轉成這個日期時間格式也非常簡單:

DateTime.Now.ToString("r");

雖然 .NET 的 ToString("r") 輸出的是 RFC1123 的日期時間格式,不過 RFC1123 中定義的日期時間格式正好與 RFC822 相容,所以可以直接這樣用!

相關連結