若說到要利用 ASP.NET 處理 RSS 文件,我們幾乎都只使用 ASP.NET RSS Toolkit 來開發程式,不管是讀入 RSS 文件,或是提供 RSS Feed 都很方便使用,而且還支援強型別功能,讓你開發起來特別得心應手。
我們之前就有個案子用上了這個,且我們的工程師參考了 Using an ASHX handler to publish a feed 這篇文章進行開發,網站也已經上線好久了,我自己也有用 Google Reader 進行訂閱動作,似乎都沒什麼問題發生。
不過最近客戶卻反應,為什麼 RSS 的前三筆永遠是固定的三篇文章,我也很直覺的回他:「不可能吧,我都有用 Google Reader 在訂閱耶,而且每天都有收到新的訊息,以及最新三筆也都沒有固定啊。」
最後客戶傳給我他的電腦畫面,此時才真相大白,正所謂:「有圖有真相」
原來在 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 相容,所以可以直接這樣用!
相關連結