Rss20FeedFormatter создает плохо сформированный RSS - PullRequest
2 голосов
/ 28 сентября 2010

Я использую 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, если это необходимо, но это довольно стандартный код.

Спасибо

Крис Фаррелл

1 Ответ

2 голосов
/ 18 ноября 2010

В ленте отсутствует элемент в корневом элементе .

Вместо того, чтобы использовать инициализатор объекта, я использую один из конструкторов, который принимает 3 аргумента (заголовок канала, описание и альтернативную ссылку канала). Третий аргумент для альтернативной ссылки фида отображается в теге корневого канала , который теперь делает фид действительным.

...