这是我的发现。我花了一段时间才弄清楚这一切。
这就是你所做的,你的提要必须有一个命名空间
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不必存在,但您需要它来定义命名空间并使 RSS 有效。通常,您只需在其中放置一个页面,说明提要的外观。