讨论:关于ASP.NET用Timer定时执行问题
别在ASP.NET里玩Timer,不然不是它死就是你被老板骂死。
IIS运行ASP.NET程序时,是有维护时间的,超过规定时间之后,没有客户端请求服务时,IIS会把这个ASP.NET程序暂停挂起的,这样,Timer就跟着不工作了。
我提供两种可行的解决方案:
1.用IIS实现也是可行的。放在Global.asax中启动Timer。去掉20分钟的回收规则。
只要网站经常有人访问,Timer是不会断掉的。
2.是写一个非常简单的WinForm程序,里面放上一个定时器控件,到了指定时间,就访问网站的指定页面,然后你把邮件发送业务在被访问的页面里处理就可以了。(WinForm桌面程序安装运行在与IIS同一服务器上,这样就保证了永久运行)
注意!根据我的经验,使用WinForm也有风险,我发现像金山毒霸或360这种杀毒软件自动升级时,烤,它们老是偷偷地杀掉WinForm工作进程,每次都得人工关闭后再打开软件一次,特别烦人。
3.另一种是Ajax,就是在你弄一个页面,里面放上js的定时器,不停地监视,等时间一到,直接Ajax向IIS请求那个发送邮件的页面。我个人偏向于用这种方法,这样只要在服务器上的浏览器运行这个JS定时器页面,那它就可以安安静静地工作了。
360和金山升级时,应该不能强制杀死IE的,所以,除非停电,不然应该是可以永久监视的
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · 使用jenkins远程布署.net项目
- · ASP.NET MVC分页 demo
- · c#/ASP.NET向百度站长平台主动推送URL
- · ASP.NET分页组装HTML代码
- · linux asp.net用httpWebRequest或WebClient访问https站点
- · 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
- · 支持高并发的IIS Web服务器常用设置
- · LINUX下部署ASP.NET:无需安装Mono的Jexus“独立版”
- · 最新asp.net/c#使用Memcached完整示例及注意事项
- · nginx+iis实现负载均衡
- · Nginx在windows下配置iis负载均衡
- · ASP.NET获取工程根目录