电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> ASP.NET教程
在虚拟主机中用asp.net1.1服务器端timer定时读取rss信息到数据库_asp.net技巧
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

前段时间作了个博客推广方面的网站:中文博客群(http://www.bokequn.cn),里边有个功能就是可以定时读取博客们的文章信息到数据库中,再显示出来供用户查询和处理TAG.因为是虚拟主机,所以只想到了用服务器端的timer来解决。

当时比较匆忙没来得及优化,水平也很有限,如果大家觉得某些地方不对或者有更好的方式来解决,还请不吝赐教。

我觉得整个过程两个重点:

如何处理timer
将读取rss模块化,更方便调用
1.关于timer,当然是写在了Global.asax中,首先建立变量:

System.Timers.Timer t=new System.Timers.Timer(1000*Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["do_time"]));
其中在web.config 中用do_time来存取多久执行一次

接下来在Application_Start中处理:

t.AutoReset=true;
t.Enabled=true;
if(common.func.get_key("can_do")=="1")//也是在web.config中存取是否进行定时处理,其中common.func.get_key是自定义的获取设置的函数
t.Elapsed +=new System.Timers.ElapsedEventHandler(fun);
函数fun的代码:


private void fun(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
System.DateTime dt=System.DateTime.Now;
common.func.write_log("开始读取远程XML");//写入日志

rss2sql rl=new rss2sql();
rl.readall();
System.DateTime dt2=System.DateTime.Now;
common.func.write_log("XML文件导入到数据库成功"+Convert.ToString(dt2-dt));//将本次执行时间写入日志,
}
catch(Exception ex)
{
common.func.write_log("读取远程xml文件出现错误:"+ex.Message);//写入日志
}
}


Global.asax中代码完毕

2.接下来就是在rss2sql类中从数据库获取rss列表,根据上次读取rss时间和rss文件的修改时间来读取rss文件并写到数据库中,因为用到了太多自定义的类和方法,所以不列出所有的代码,有兴趣的朋友可以到最后下载,其中比较重要的函数:

/**//// <summary>
/// 读取指定链接的rss内容到数据库
/// </summary>
/// <param name="id">对应博客的id</param>
/// <param name="url">rss地址</param>
/// <param name="dt">上次读取时间</param>
public void read_from_url(string id,string url,System.DateTime dt)
{
op_db.db_class db1=new op_db.db_class();
try
{
rssFeed feed = new rssFeed(url,dt);//建立一个rss读取类实例
feed.read();//开始读取
if(feed.Channel.Items.Count>0)//如果文章数大于0,开始读取到数据库
{
for(int i=0;i<feed.Channel.Items.Count;i++)
{

write_artical(id,feed.Channel.Items[i].title,feed.Channel.Items[i].link,feed.Channel.Items[i].description,feed.Channel.Items[i].pubDate);
}
db1.sql="update bokequn set last_rss_date="+feed.lastModified.ToString()+" where id="+id;
db1.executesql();
}
}
catch(Exception ex)
{
common.func.write_log(id+":url:"+url+"错误"+ex.Message+ex.Source+ex.StackTrace);
}
finally
{
db1.db_close();

}
}


其中rssFeed 就是自己写的处理rss的类,对于这个类,以前曾经用过一段时间开源的rss.net,但是实际过程中因为各种rss地址都有,甚至很多不太符合标准,所以会遇到很多问题,而且看了一下源代码,他想处理的东西太多了,代码量也非常庞大,我这点水平估计一时半会是改不好的,于是就自己作了个控件,也算不上控件了,就几个类,当然我处理的内容也相对简单了很多,只处理rss的标题和简介,item的标题,简介,时间,链接。

代码贴过来太多了,有兴趣的朋友可以到最后下载

用法相当简单了,把编译后的dll引用过来就可以如下使用:

rssFeed feed = new rssFeed(url,dt);//建立一个rss读取类实例
feed.read();//开始读取
feed.Channel.title
feed.Channel.description
feed.Channel.Items.Count
feed.Channel.Items[i].title
feed.Channel.Items[i].description
feed.Channel.Items[i].link
feed.Channel.Items[i].pubDate

构造函数中的dt表示上次读取时间,因为在类中会获得rss文件的修改时间,如果大于上次读取时间才去读取,否则就不处理了,别的相信大家一看就能明白了

目前rss读取还存在着一个问题,就是有的xml文件中如果有16进制字符(当然这个出现的可能性不大)就读取不了,哪位仁兄知道怎么解决,还请告知。

说的有些乱,还是希望对需要此功能的朋友有所帮助。

相关下载:http://www.cnblogs.com/Files/guanvee/code.rar

http://guanvee.cnblogs.com/archive/2006/06/17/428329.html


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·让asp.net简便使用script_asp.net技巧
·asp.net atlas对javascript的扩展_asp.net技巧
·asp.net服务器控件编程之热身运动_asp.net技巧
·.net下生产图片验证码_asp.net技巧
·.net分页控件发布_asp.net技巧
·如何在搜索结果出来之前,让页面显示“等待中...” _asp.net技巧
·sharpwebmail介绍和安装_asp.net技巧
·photoshop黑人照片肤色漂白变白人_photoshop教程
·做完一个小网站的一点经验总结(2): asp.net+access程序运行环境的配置_asp.net实例
·将web站点下的绝对路径转换为虚拟路径_asp.net技巧

最新文章
·对.net framework 反射的反思_asp.net技巧
·.net3.5和vs2008中的asp.net ajax_asp.net技巧
·使用asp.net ajax框架扩展html map控件_asp.net技巧
·asp.net应用程序资源访问安全模型_asp.net技巧
·photoshop初学者轻松绘制螺旋漩涡特效_photoshop教程
·photoshop通道结合图层模式抠狗尾巴草_photoshop教程
·web.config详解+asp.net优化_asp.net技巧
·asp.net中多彩下拉框的实现_asp.net技巧
·asp.net中数据校验部分的封装与应用_asp.net技巧
·asp.net网络编程中常用到的27个函数集_asp.net基础


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号