asp.net - 在 asp.net core 1.0 中创建 RSS 提要

标签 asp.net xml asp.net-core-mvc asp.net-core-1.0 rss2

我正在使用 Asp.net Core 1.0 MVC 6 我正在尝试编写一个组件来从我的网站提供 RSS 提要。

我找到了 this post这表明 System.ServiceModel.Syndication 尚未移植到 ASP.NET CORE。

我无法针对完整的 .NET 框架。

建议写成xml解析器。然而,我正在努力了解可能需要的一切。

我已经构建了将我的数据转换为 XML 的功能,但现在需要更好地理解如何允许从 IActionResult 调用它(或者实际上如何生成可以放置在我的页面上的链接)。

我可以提供我的代码示例,但我不确定它是否有用。 有谁能给我指出实现这一目标的正确方向吗?

我还在这篇文章中找到了一个答案,它指向一些想法,但我认为是 MVC6/Asp.net Core 之前的答案:RSS Feeds in ASP.NET MVC

最佳答案

// action to return the feed
[Route("site/GetRssFeed/{type}")]
public IActionResult GetRssFeed(ArticleStatusTypes type)
{
    var feed = _rss.BuildXmlFeed(type);
    return Content(feed, "text/xml");
}


public string BuildXmlFeed(ArticleStatusTypes type)
{
    var key = $"RssFeed{Convert.ToInt32(type)}{_appInfo.ApplicationId}";
    var articles =
            _cache.GetCachedData(key) ??
            _cache.SetCache(key, _service.GetItems(Convert.ToInt32(type), _appInfo.CacheCount));

    StringWriter parent = new StringWriter();
    using (XmlTextWriter writer = new XmlTextWriter(parent))
    {
        writer.WriteProcessingInstruction("xml-stylesheet", "title=\"XSL_formatting\" type=\"text/xsl\" href=\"/skins/default/controls/rss.xsl\"");

        writer.WriteStartElement("rss");
        writer.WriteAttributeString("version", "2.0");
        writer.WriteAttributeString("xmlns:atom", "http://www.w3.org/2005/Atom");

        // write out 
        writer.WriteStartElement("channel");

        // write out -level elements
        writer.WriteElementString("title", $"{_appInfo.ApplicationName} {type}" );
        writer.WriteElementString("link", _appInfo.WebsiteUrl);
        //writer.WriteElementString("description", Description);
        writer.WriteElementString("ttl", "60");

        writer.WriteStartElement("atom:link");
        //writer.WriteAttributeString("href", Link + Request.RawUrl.ToString());
        writer.WriteAttributeString("rel", "self");
        writer.WriteAttributeString("type", "application/rss+xml");
        writer.WriteEndElement();

        if (articles != null)
        {
            foreach (var article in articles)
            {
                writer.WriteStartElement("item");

                writer.WriteElementString("title", article.Title);
                writer.WriteElementString("link", _appInfo.WebsiteUrl); // todo build article path
                writer.WriteElementString("description", article.Summary);

                writer.WriteEndElement();
            }
        }

        // write out 
        writer.WriteEndElement();

        // write out 
        writer.WriteEndElement();
    }

    return parent.ToString();
}

关于asp.net - 在 asp.net core 1.0 中创建 RSS 提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38303957/

相关文章:

javascript - 如何在已知的 XML 标签之间进行匹配?

asp.net-mvc - 为什么我的属性路由不起作用?

c# - ASP.Net core MVC6 在未授权时重定向到登录

c# - 在asp.net中从mysql数据库获取信息

c# - 在 asp.net 中设置 Referer header

php - 将 .htaccess 翻译成 web.config

java - 在对话框打开时显示 toast ?

javascript - 无法更改文本框颜色?

xml - 如何从golang中的XML文件中提取多个字段

c# - Asp.net core 2.0 Configure.Services<model>() 绑定(bind)不适用于用户 secret