Вот мои выводы. Потратил меня на то, чтобы понять все.
Это то, что вы делаете, ваш канал должен иметь пространство имен
XNamespace extxmlns = "http://www.yoursite.com/someurl";
feed.AttributeExtensions.Add(new XmlQualifiedName("ext", XNamespace.Xmlns.NamespaceName), extxmlns.NamespaceName);
feed.ElementExtensions.Add(new XElement(extxmlns + "link", new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml")));
return new Rss20FeedFormatter(feed, false);
Ваши детали должны быть производным классом, и вы пишете расширенные свойства в WriteElementExtensions, убедившись, что вы префикс их с пространством имен (вам это не обязательно, но это то, что требуется для того, чтобы он был достоверным RSS).
class TNSyndicationItem : SyndicationItem
protected override void WriteElementExtensions(XmlWriter writer, string version)
{
writer.WriteElementString("ext:abstract", this.Abstract);
writer.WriteElementString("ext:channel", this.Channel);
}
Расширенные свойства игнорировать, если вы смотрите в RSS читателя, такие как Firefox, вам нужно написать код, чтобы прочитать их.
URL-адрес http://www.yoursite.com/someurl не обязательно должен существовать, но вам необходимо определить пространство имен и сделать его действительным. Обычно вы просто ставите страницу, в которой говорится о том, как должен выглядеть фид.
Я думаю, что это может помочь: http://msdn.microsoft.com/en-us/library/vstudio/bb924494(v=vs.100).aspx –