2

ASP.Net MVC2を使用していて、ブログのRSSフィードを持っています。System.ServiceModel.SyndicationとRss20FeedFormatterのすぐに使用できる機能を使用しています。

フィードは正常に機能し、Outlookだけでなく、試したすべてのブラウザでも読み取ることができます。ただし、RSSフィードをサイトマップとしてGoogleに送信すると、検証エラーが発生しました。
好奇心から、同様の問題を報告したfeedvalidatorでフィードを検証しました。

フィード: http: //www.chrispfarrell.com/Blog/Rss

このフィードをfeedvalidator.orgにポップインすると、問題が発生します。

RSSを生成するためのカスタムコードは実際にはありません。

コントローラーのアクションは

public FeedResult Rss()
        {
            const string baseUrl = "http://www.chrispfarrell.com/Blog/View/";

            var blogs = _blogService.GetBlogs();
            var feed = new SyndicationFeed
                           {
                               Title = new TextSyndicationContent("Chris Farrell"),
                               Copyright = new TextSyndicationContent("Copywrite Chris Farrell 2010")
                           };

            var postItems = blogs.Take(25)
                .Select(p => new SyndicationItem(p.Title,p.Body,new Uri(baseUrl + p.BlogUrl))
                                 {
                                     PublishDate = p.DateCreated,
                                 });

            feed.Items = postItems;
            return new FeedResult(new Rss20FeedFormatter(feed));
        }  

フィードが有効でなく、整形式でない理由についてのコメントはありますか?必要に応じてFeedResultのコードを投稿できますが、かなり標準的なコードです。

ありがとう

クリスファレル

4

1 に答える 1

2

フィードのルート <channel> 要素に <link> 要素がありませんでした。

オブジェクト初期化子を使用するのではなく、3 つの引数 (フィードのタイトル、説明、フィードの代替リンク) を受け入れるコンストラクターの 1 つを使用しています。フィードの代替リンクの 3 番目の引数は、ルート チャネルの <link> タグでレンダリングされ、フィードが有効になります。

于 2010-11-18T00:40:21.690 に答える