在asp.net中使用异步同步rss

本文介绍了一种使用.Net从论坛获取RSS信息的方法,通过创建自定义控件和任务类实现异步加载RSS内容,并展示了如何解析XML数据及排序显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有的时候我们需要在网页里读取论坛的信息,在传统ASP的时候我们使用的是JS或者是IFRAME,这两种方式都不是很方便,而且对搜索引擎不友好。现在有了.Net,我们有了另一种方式。

要求:论坛需要提供RSS支持。

代码如下:

  1      task class
 82
 83      // 一个自定义的控件,继承自另一个自定义控件。
 84      public   class  RArticle
 85         : LPanel
 86      {
 87        properties
104
105        RssAsyncTask task;
106        protected override void OnInit(EventArgs e)
107        {
108            base.OnInit(e);
109            task = new RssAsyncTask(this.rssUrl);
110            PageAsyncTask asyncTask = new PageAsyncTask(task.OnBegin, task.OnEnd, task.OnTimeout, null);
111
112            Page.RegisterAsyncTask(asyncTask);
113            Page.ExecuteRegisteredAsyncTasks();
114        }

115
116        static Random r = new Random();
117        protected override void Render(System.Web.UI.HtmlTextWriter writer)
118        {
119            string rssContent = task.GetRssContent();
120            XmlDocument doc = null;
121            if (task.IsSuccess)
122            {
123                doc = new XmlDocument();
124                doc.LoadXml(rssContent);
125
126                this.Title = doc.SelectSingleNode("rss/channel/title").InnerText;
127                this.TitleNavigateUrl = doc.SelectSingleNode("rss/channel/link").InnerText;
128                this.ShowTitle = true;
129            }

130            base.RenderBegin(writer);
131
132            writer.WriteBeginTag("div");
133            writer.WriteAttribute("class""child2");
134            Right(writer);
135            writer.WriteBeginTag("ul");
136            Right(writer);
137
138            if (doc != null)
139            {
140                success
171            }

172            else
173            {
174                writer.WriteBeginTag("pre");
175                Right(writer);
176                writer.Write(task.GetRssContent());
177                writer.WriteEndTag("pre");
178            }

179
180            writer.WriteEndTag("ul");
181            writer.WriteEndTag("div");
182
183            RenderChildren(writer);
184
185            base.RenderEnd(writer);
186        }

187    }

188



使用方法:
一、注册控件

CODE:
<%@ Register Assembly="Controls" Namespace="Limited.Controls" TagPrefix="lm" %>
二、调用

CODE:
<lm:RArticle ID="RArticle1" runat="server" MaxRecordNumber="10" RssUrl="http://bbs.5inet.net/rss.aspx" />
为了简便起见,本程序就没有使用缓存之类的技术了,如有必要,请自行添加。

原文首发:http://bbs.5inet.net/topic.aspx?topicid=181

具体效果请见本站首页: http://www.5inet.net/

本文首发无垠论坛,请大家多指教。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值