.NET 个人博客-添加RSS订阅功能

这篇具有很好参考价值的文章主要介绍了.NET 个人博客-添加RSS订阅功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人博客-添加RSS订阅功能

前言

个人博客系列已经完成了

博客地址:https://pljzy.top

然后博客开源的原作者也是百忙之中添加了一个名为RSS订阅的功能,那么我就来简述一下这个功能是干嘛的,然后照葫芦画瓢实现一下。

RSS简述

来自chatGPT的回答

网站的RSS订阅是一种用于订阅和获取网站内容更新的技术。RSS(Really Simple Syndication)是一种XML格式的文件,包含了网站的最新文章、新闻、博客、视频等内容的摘要和链接。通过订阅网站的RSS源,用户可以方便地获取最新的内容更新,而无需每次都访问网站。

使用RSS订阅可以帮助用户更有效地管理和浏览大量的网站内容。当订阅的网站有新的内容发布时,用户可以通过RSS阅读器或者其他支持RSS的应用程序自动获取更新的摘要和链接。这样,用户可以快速浏览多个网站的最新内容,选择感兴趣的文章进行阅读。

通过订阅网站的RSS源,用户可以节省时间和精力,同时也可以避免错过重要的内容更新。无论是新闻、博客、论坛还是其他类型的网站,只要提供了RSS订阅功能,用户就可以方便地订阅并获取更新的内容。

功能实现

安装依赖

Nuget包:

System.ServiceModel.Syndication

创建控制器

_dbContext用来操作数据库的,我用的是EF Core,这里就不做解释了

_conf是用来获取系统配置的,对于RSS功能实现影响不大,不做解释

public class RssController : Controller
{
    private readonly MyDbContext _dbContext;
    private readonly ConfigService _conf;

    public RssController(MyDbContext dbContext,ConfigService conf)
    {
        _dbContext = dbContext;
        _conf = conf;
    }

    [HttpGet]
    public IActionResult Index()
    {
        var feedUrl = $"{_conf["host"]}/feed";
        ViewBag.FeedUrl = feedUrl;
        return View();
    }
}

添加接口

接口内容太多,分步解释

[ResponseCache(Duration = 1200)] 设置客户端缓存1200秒

 [ResponseCache(Duration = 1200)]
 [HttpGet("feed")]
 public async Task<IActionResult> Feed(){

}

初始化

  • host 其实就是自己项目的url,本地跑就是https://localhost......
  • items 为集合类型的SyndicationItem对象,后续会添加多个对象
  • posts 查询出今年所有文章,并且同时查询出文章的分类
  • feed 传入的参数分别是标题、说明、网站地址、订阅ID和最后更新时间。
var host = _conf["host"];
var items = new List<SyndicationItem>();
var posts = await _dbContext.posts.Where(a => a.CreationTime.Year == DateTime.Now.Year)
.Include(a => a.Categories)
.ToListAsync();
var feed = new SyndicationFeed("ZY知识库", "这是一个用于分享知识和经验的平台,我会在这里分享一些我学习和工作中的经验和心得,希望能够对你有所帮助。",
new Uri($"{host}"), "RSSUrl", posts.First().LastUpdateTime)
{
Copyright = new TextSyndicationContent($"{DateTime.Now.Year} ZY知识库")
};

添加文章

为items对象添加数据,参数为标题、HTML 格式的文章内容、地址、最后更新时间,并且每个items对象都有CategoriesAuthorsPublishDateSummary这4个参数,对应category、author、published、summary

如图所示:

.NET 个人博客-添加RSS订阅功能

 foreach (var item in posts)
 {
     var postUrl = Url.Action("Post", "Blog", new { id = $"{item.Id}" }, HttpContext.Request.Scheme);
     items.Add(new SyndicationItem(item.Title,
     item.Summary, //图文并茂看下方↓
     new Uri(postUrl),item.Id,item.LastUpdateTime)
 {
     Categories = { new SyndicationCategory(item.Categories?.Name) },
     Authors = { new SyndicationPerson("1767992919@qq.com","ZY知识库",$"{_conf["host"]}") },
     PublishDate = item.CreationTime,
     Summary = new TextSyndicationContent(item.Summary)
 });
 }

feed.Items = items;

如果要让 RSS 阅读器显示文章的时候图文并茂,应该使用 HTML 格式的文章内容,可以把 item.Summary 换成以下代码

new TextSyndicationContent(PostService.GetContentHtml(item), TextSyndicationContentKind.Html)

生成xml

var settings = new XmlWriterSettings {
    Async = true,
    Encoding = Encoding.UTF8,
    NewLineHandling = NewLineHandling.Entitize,
    NewLineOnAttributes = true,
    Indent = true
};
using var stream = new MemoryStream();
await using var xmlWriter = XmlWriter.Create(stream, settings);
var rssFormatter = new Atom10FeedFormatter(feed);
rssFormatter.WriteTo(xmlWriter);
await xmlWriter.FlushAsync();

return File(stream.ToArray(), "application/xml; charset=utf-8");

功能预览

RSS本身是一种XML格式的文本内容,要查看该内容需要用到专门的RSS客户端,原作者推荐的是开源的Windows客户端 Fluent Reader。

那么他的下载地址为:Releases · yang991178/fluent-reader (github.com)

然后只需要添加预览源:https://pljzy.top/feed 就能看到今年发布的文章了

如图:

.NET 个人博客-添加RSS订阅功能

.NET 个人博客-添加RSS订阅功能

.NET 个人博客-添加RSS订阅功能文章来源地址https://www.toymoban.com/news/detail-508589.html

参考资料

  • https://blog.sblt.deali.cn:9000/Blog/Post/adcd547eefd06863
  • 基于.NetCore开发博客项目 StarBlog - (29) 开发RSS订阅功能 - 程序设计实验室 - 博客园 (cnblogs.com)

到了这里,关于.NET 个人博客-添加RSS订阅功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 个人博客-给推荐文章添加排序字段

    前篇文章优化了推荐文章的加载,但是呢,还是不太满意,之前是按照文章的发布日期去排序的,既然是推荐文章,还是得用一个字段去专门管理顺序。 设计思路: 给推荐文章表添加一个排序字段,然后写一个修改方法即可。 这里的数据类型以sqlite3为例。 字段名 类型 解释

    2024年02月10日
    浏览(36)
  • 开源的RSS订阅器FreshRSS

    周日的核酸提前到了周六,还以为不用做了 结果昨天又通知再连续 3 天的核酸 嗓子都捅出老茧了,这么热的天,大家都不容易,病毒就别跟着凑热闹了。 什么是 FreshRSS ? FreshRSS 是一款自由免费的 RSS 订阅器,界面美观,支持导入/导出为 OPML 文件、过滤、标记、搜索等。 在群

    2024年02月05日
    浏览(32)
  • .NET 个人博客-首页排版优化-2

    原本这篇文章早就要出了的,结果之前买的服务器服务商跑路了,导致博客的数据缺失了部分。我是买了一年的服务器,然后用了3个月,国内跑路云太多了,然后也是花钱重新去别的服务商买了一台服务器,这次只买了一个月,先试试水。 置顶3个且可滚动或切换 推荐改为

    2024年02月14日
    浏览(42)
  • 个人博客系统 -- 登录页面添加图片验证码

    目录 1. 功能展示 2. 前段代码 3. 后端代码 在登录页面添加验证码登录 1. 检测到没有输入验证码或者输入的验证码错误时,进行弹窗提示.并且刷新当前验证码图片 2. 点击验证码进行刷新   1. 添加验证码标签,在密码的下面,在login.html进行修改 主要改动如下: 2. 在提交的函数中加

    2024年02月15日
    浏览(56)
  • .NET个人博客-使用Back进行消息推送

    我的好友看了我的博客,给我提了个需求,让我搞个网站通知,我开始以为就是评论回复然后发送邮件通知。不过他告诉我网站通知是,当有人评论或者留言后,会通知到我这边来,消息是实时通知的,他说用的是Back,不需要发邮件,然后发了个GitHub链接给我,我觉得还不错

    2024年02月16日
    浏览(36)
  • .NET6 个人博客-推荐文章加载优化

    随着博客文章越来越多,那么推荐的文章也是越来越多,之前推荐文章是只推荐8篇,但是我感觉有点少,然后也是决定加一个加载按钮,也是类似与分页的效果,点击按钮可以继续加载8篇文章。 同样使用 X.PagedList 组件去实现分页效果,通过Nuget下载即可 首先我在Service层新

    2024年02月09日
    浏览(42)
  • 个人博客留言板功能实现

    因为这个博客是用的大佬的开源项目,我也是用自己的想法改了很多东西,虽然可能写的不是很好,但是我自己想要的效果实现了,开源项目不就是用来学习的嘛,所以不能一层不变,之前首页改版、评论功能我都没有写文章,这次抽空更新了留言板功能,来水一篇文章。

    2024年02月08日
    浏览(39)
  • 基于ASP.NET MVC开发的、开源的个人博客系统

    推荐一个功能丰富、易于使用和扩展的开源博客,可以轻松地创建和管理自己的博客。 基于.Net Framework 4.5开发的、开源博客系统,具有丰富的功能,包括文章发布、分类、标签、评论、订阅、统计等功能,同时也可以根据需要进行自定义扩展。 提供了丰富的配置选项和API,

    2024年02月14日
    浏览(59)
  • irreader RSS 订阅源阅读器工具软件 - 一款强大的网络内容阅读器

    irreader 是一款强大的网络内容阅读器,不仅支持订阅 RSS 文章,还能够订阅网站、播客等内容,将众多订阅源聚合于一处,告别纷杂的互联网信息。     方便的内置订阅源 软件界面采取源列表、文章列表和内容区三栏式布局,内置的「源市场」整合多种热门订阅源,并按照互

    2024年02月01日
    浏览(48)
  • 博客添加评论功能及定制化样式

    哈喽大家好,我是咸鱼。(博客网址: https://xxxsalted.github.io/) 在搭建了博客并换了主题之后,发现有许多细节方面的东西还需要完善和定制化一下,比如说行距和引用的样式我不是很喜欢,以及没有评论功能。 于是决定自己动手,说干就干。 PS:下文的修改操作仅限于博客

    2024年04月28日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包