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

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

我們之前就有個案子用上了這個，且我們的工程師參考了 [Using an ASHX handler to publish a feed](https://github.com/IDisposable/ASPNetRSSToolkit/blob/master/docs/Publishing%20a%20feed%20using%20ASHX%20handler.md) 這篇文章進行開發，網站也已經上線好久了，我自己也有用 Google Reader 進行訂閱動作，似乎都沒什麼問題發生。

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

最後客戶傳給我他的電腦畫面，此時才真相大白，正所謂：「有圖有真相」

[![我的貼身e管家公眾訊息RSS](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5549571c64b4684450f5-image_6.png)](http://msg.nat.gov.tw/rss.axd)

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

在 CodePlex 上的[範例](https://github.com/IDisposable/ASPNetRSSToolkit/blob/master/docs/Publishing%20a%20feed%20using%20ASHX%20handler.md)中顯示 RSS 的每一個項目標籤如下：

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

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

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

依據 [RSS 2.0 Specification](http://cyber.law.harvard.edu/rss/rss.html) 中的定義，所有在 RSS 文件中出現的**日期格式**都必須以 [RFC822: Standard for ARPA Internet Text Messages](http://www.w3.org/Protocols/rfc822/) 中定義的[日期時間規範](http://www.w3.org/Protocols/rfc822/#z28)呈現。

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

```
DateTime.Now.ToString("r");
```

雖然 .NET 的 **ToString("r")** 輸出的是 [RFC1123](http://www.faqs.org/rfcs/rfc1123.html) 的日期時間格式，不過 [RFC1123](http://www.faqs.org/rfcs/rfc1123.html) 中定義的日期時間格式正好與 [RFC822](http://www.w3.org/Protocols/rfc822/) 相容，所以可以直接這樣用！

**相關連結**

-   [ASP.NET RSS Toolkit](https://github.com/IDisposable/ASPNetRSSToolkit)
-   [RSS 2.0 Specification](http://cyber.law.harvard.edu/rss/rss.html)
-   [String.Format 方法 (String, Object)](http://msdn.microsoft.com/zh-tw/library/fht0f5be\(VS.80\).aspx)
-   ASP.NET RSS Toolkit快速滿足你對於RSS的需求
