RSS20FeedFormatter допускает RSS, который не является хорошо сформированным
-
25-09-2019 - |
Вопрос
Я использую ASP.NET MVC2 и иметь RSS-канал для моего блога. Я использую из функциональности коробки в System.Servicemodel.syndication и RSS20FeedFormatterter.
Корма работает нормально и может прочитать прогноз, а также каждый браузер, который я пробовал. Однако, когда я отправил 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, если это необходимо, но его довольно стандартный код.
Спасибо
Крис Фаррелл
Решение
Корм отсутствовалu003Clink> элемент в корнеu003Cchannel> элемент.
Вместо того, чтобы использовать инициализатор объекта, я использую одну из конструкторов, которые принимают 3 аргумента (заголовок подачи, описание и подачу альтернативной линии связи). Третий аргумент для подачи альтернативной ссылки визуализации в корневом каналеu003Clink> Тег, который делает кормить сейчас действительным.