博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net后台进程做定时任务
阅读量:6607 次
发布时间:2019-06-24

本文共 1357 字,大约阅读时间需要 4 分钟。

一个网站难免会有希望系统自动执行一些定时任务,asp.net提供这个功能,在应用程序开始的时候你做一个定时任务即可,只是IIS的应用程序池有自动回收机制,它会在工作1740分钟(默认)后自动回收,或者在系统空闲20分钟(默认)后自动回钟,此时定时任务会中止,因为事实上已经“application_end”了,这时候只要强制访问一下该网站的任何一个页面,甚至是空页面,其实也就是使应用程序激活,重新application_start,自然可以让任务重新开始

string activeURL;    void Application_Start(object sender, EventArgs e)     {        //在应用程序启动时运行的代码        CheckOrder.ckroder_start();//该方法比较复杂,封装出去了        Uri uri = HttpContext.Current.Request.Url;        activeURL = uri.Scheme + "://" + uri.Host + ":" + uri.Port + "/test.aspx";        //上面演示了如何用编程方式获得当前应用程序的url,当前如果你的项目发布固定了,可以直接在application_end事件里面把url写死    }        void Application_End(object sender, EventArgs e)     {        //在应用程序关闭时运行的代码        log.write(LogType.Trace, "后台检查订单进程关闭");        //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start        System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(activeURL);        System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();        System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流    }
有人在回复里提到有时候HttpContext.Current取不到值的问题,我也没能解决,毕竟它不是真实的请求
@翅膀的初衷确实,但凡自动回收后被程序激活的,此时HttpContext.Currnet已经为空了。所以:1,有谁有好的办法可以用编程方式有效地取得真实域名么?我这个方式显然局限性很大。2,我手动在iis应用程序池里点回收,每次却能正常激活,也就是说能取到HttpContext.Currnet,这个原因我也没想明白blog
分享两篇老外的做法:

转载地址:http://wqiso.baihongyu.com/

你可能感兴趣的文章
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>
MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
查看>>
git 显示多个url地址推送
查看>>
Java Web之Filter
查看>>
HTTP状态码详解
查看>>
Java_动态加载
查看>>
atitti.atiNav 手机导航组件的设计
查看>>
Ubuntu+Apache+PHP+Mysql环境搭建(完整版)
查看>>
Atitit.计算机图形图像图片处理原理与概论attilax总结
查看>>
于ssh端口转发的深入实例[转 - 当当 - 51CTO技术博客
查看>>
从Python安装到语法基础,这才是初学者都能懂的爬虫教程 ...
查看>>
超级AD远程管理软件
查看>>
Oracle数据库安全加固记录
查看>>
安全运维之:Linux系统账户和登录安全
查看>>
【cocos2d-x从c++到js】17:使用FireFox进行JS远程调试
查看>>
Kafka Offset Storage
查看>>
深度学习笔记之CNN(卷积神经网络)基础
查看>>