我正在使用ASP.Net MVC2并为我的博客提供RSS源。我在System.ServiceModel.Syndication和Rss20FeedFormatter中使用开箱即用的功能。
Feed很好用,可以通过Outlook以及我尝试过的每个浏览器读取。但是,当我将RSS提要作为站点地图提交给Google时,我收到了验证错误 出于好奇,我使用feedvalidator验证了feed报告了类似的问题。
Feed:http://www.chrispfarrell.com/Blog/Rss
如果您在feedvalidator.org上弹出此Feed,您将看到问题。
实际上没有自定义代码来生成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));
}
有关为什么Feed无效且形式良好的任何评论?如果需要,我可以发布FeedResult的代码,但它的代码非常标准。
由于
Chris Farrell
答案 0 :(得分:2)
Feed缺少< link>根< channel>中的元素元件。
我使用的是一个接受3个参数(feed标题,描述和feed备用链接)的构造函数,而不是使用对象初始值设定项。源通道中的第三个参数备用链接呈现< link>标签使饲料现在有效。