IIS进程回收导致定时器失效的一种解决办法
公司开发的网站使用的.net,网站中用到了定时器,放在Global.asax.cs文件中,但由于IIS设置了网站进程定期回收,回收后定时器也就没了。如果不让进程回收,又担心程序中有内存泄露。有人说可以在Application_End发起HTTP请求,但这样做和设置不让进程回收没有任何区别,结果就是该进程一直运行,只有保证不存在内存泄露才可以这样做。也有人说可以用Windows Service,对这个不了解,所以这招放弃了。最后想到了一个方法,编写脚本命令(这里用DOS命令)访问网站,再通过Windows的任务计划来定时执行脚本。.bat文件如下,直接运行该.bat,发现会用IE浏览器打开www.baidu.com,几秒后关闭,看来命令运行是OK的。
::访问网站,触发定时器
                                    ::ping10次后关闭,10次大约延时10秒左右,不是很精确,然后关闭IE浏览器进程及子进程
                                     start iexplore.exe  www.baidu.com ::为了保密,这里没写真正要访问的网站
                                     ping -n 10 127.0.0.1>nul 
                                     taskkill /f /im iexplore.exe  /t
任务计划在附件——系统工具中,可以“创建基本任务”和“创建任务”,前者比较简单,定时器的最短间隔为1天,后者功能更强大一些,定时器的最短间隔为1分钟。这里我使用“创建任务”,在“常规”中可以设置“只在用户登当运行”或“不管用户是否登录都要运行”,这里设置“不管用户是否登录都要运行”(注:选择该项时,设置完所有参数后会要求输入账户密码,如果账户密码为空,会提示错误,但貌似空密码也有解决办法),配置选与自己电脑的匹配的那项。建立好任务后,当定时器时间到了却没有打开IE浏览器的窗口,再看任务管理器,有进程iexplore.exe,而且网站也的确被访问了(在计划任务运行之前,网站进程是关闭的,而且可以保证该段时间内没有人访问,现在发现网站进程运行中),经过多次设置参数和测试,结果依旧。但如果设置成“只在用户登当运行”,却可以看到定时器到后会打开IE窗口。后来在CSDN看到一个帖子http://bbs.csdn.net/topics/340003615,里面有人说如果设置为“不管用户是否登录都要运行”,那程序就后台运行,要想看到交互界面,就要用DOS命令at添加任务计划。自己想了想,貌似真的是这样,但知道程序在后台运行了就OK了,看不到界面也无妨,也许这是Windows的一个bug吧。
缺点:
1、任务计划的定时器最短间隔为1分钟,如果再短的,就无能为力了,其实即使可以,也不要用这种发HTTP请求的方法去激活网站进程,之前设置每5秒发一次HTTP请求,最后服务器挂了,只能重启,原因也没查出来(后来知道不是因为HTTP请求频繁导致的,至于HTTP请求频繁会不会导致死机,我不清楚。通过事件日志,发现本次死机是因为Windows自动更新后重启,电脑是3点多开始重启的,但到9点了还没起来,后打电话问万网的客服,他们说电脑还在关机界面,看来应该是自动更新的问题。让他们重启后,就OK了,然后禁用了自动更新)。
2、关闭IE就意味着关闭所有页面,如果我们这时正在用IE看其它网页,那也会关闭,不过还好,因为是在服务器上,一般没人打开IE。
IIS进程回收导致定时器失效的一种解决办法的更多相关文章
- C# 因IIS回收导致定时器失效的解决方案
		
首先不要设置iis自动回收,一般设置凌晨1-2点左右回收一次,当凌晨iis回收应用程序池的时候,会调用Application_End,执行里面的代码, 重新启动网站,建议定时器的代码放在Session ...
 - Response.Write()方法响应导致页面字体变大的解决办法
		
关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法 最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...
 - Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法
		
Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法 可能是误删文件导致在使用rman备份时候出现以下提示 RMAN-06169: could not read file hea ...
 - QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法
		
每隔一段时间,我的QQ就无法登陆,提示:QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法 点击了解详情发现里面的解决办法根本不起作用,网上 说的各种解决办法都不起作用,解决办法如下 1. ...
 - win32绘制自定义类窗口导致绘制11个窗口的解决办法
		
上网查了一圈也没有找到解决问题的办法,一旦创建了一个窗口,并且在过程函数中绘制窗口,尤其是一些非子窗口的自定义类窗口,都会生成11个窗口(算上主窗口就是12个),但是使用系统通用控件就不会有这种情况的 ...
 - 遭遇input与button按钮背景图失效不显示的解决办法
		
笔者从事网页前端代码页面工程师已有多年,作为一个网页重构人员常常会遇到一些莫名其妙的DIV+CSS(正确的说法是XHTML+CSS)在 IE.FireFox火狐. 谷歌浏览器CHROME.苹果浏览器S ...
 - input与button按钮背景图失效不显示的解决办法
		
今天做公司的某个网站前端网页页面的时候笔者又遇到了难解决的网页前端DIVCSS代码问题,一个平时不会发生的怪事情发生了:为网页代码中的Form表单中的input 和 button 按钮标签在CSS样式 ...
 - js上传文件过大导致上传失败原因以及解决办法
		
背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...
 - 百度地图API 与 jquery 同时使用时报 TypeError $(...) is null错误 失效的原因及解决办法
		
在引用百度地图API后,发现jquery 根据id 找不到 form.但是对于别的控件没有问题. 在排除了 html加载的问题后. 上网查找 发现以下解决办法: 原因应该是有冲突的插件. 解决办法将 ...
 
随机推荐
- WebMisCentral-Client 适配MySql数据库
			
由于本身WebMisCentral采用的是EF5.0,所以适配起来还是非常简单的,下面看操作: 1.ElegantWM.WebUI层中(或者ElegantWM.DAL)通过NUGET下载MySQL.D ...
 - wpf 模板选择器DataTemplateSelector及动态绑定,DataTemplate.Triggers触发器的使用
			
通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelect ...
 - PHP最全笔记(一)(值得收藏,不时翻看一下)
			
PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任 ...
 - java-信息安全(六)-基于RSA理解数字签名示例
			
概述 java-信息安全(四)-数据签名.数字证书 java-信息安全(五)-非对称加密算法RSA RSA工具类 使用java-信息安全(五)-非对称加密算法RSA项目中RSACoder 数字签名理解 ...
 - openwrt 域名ping不通 修改dns
			
问题 wget: bad address 'downloads.openwrt.org' wget: bad address 'downloads.openwrt.org' wget: bad add ...
 - python 模块会导入几次?猴子补丁为什么可以实现?
			
一共三个文件 a.py内容是 print('被导入') x = 1 b.py内容是 import a a.x = 2 c.py内容是 import a import b print(a.x) 现在运行 ...
 - Ajax简单整理-思维导图
			
图片和mmap下载地址:http://pan.baidu.com/s/1jGqUpxk
 - java基础---->序列化框架arvo的使用
			
这里面我们介绍一下序列化框架arvo的使用,在kafka中使用的就是这个. arvo的使用 一.需要通过插件生成Model类方式 一.生成我们的数据模型User.java 我们在resources里面 ...
 - WinForm资源管理器开发(TreeView&ListView)
			
在C# WinForm开发当中,有三大View控件值得深入应用,分别为DataGridView.ListView.TreeView.如果这三大控件能够熟练的应用,其它的控件也就基本没有问题.所以这篇博 ...
 - js将图片转换为base64
			
直接上代码: var img = "imgurl";//imgurl 就是你的图片路径 function getBase64Image(img) { var canvas = do ...