公司开发的网站使用的.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进程回收导致定时器失效的一种解决办法的更多相关文章

  1. C# 因IIS回收导致定时器失效的解决方案

    首先不要设置iis自动回收,一般设置凌晨1-2点左右回收一次,当凌晨iis回收应用程序池的时候,会调用Application_End,执行里面的代码, 重新启动网站,建议定时器的代码放在Session ...

  2. Response.Write()方法响应导致页面字体变大的解决办法

    关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法     最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...

  3. Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法

    Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法 可能是误删文件导致在使用rman备份时候出现以下提示 RMAN-06169: could not read file hea ...

  4. QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法

    每隔一段时间,我的QQ就无法登陆,提示:QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法 点击了解详情发现里面的解决办法根本不起作用,网上 说的各种解决办法都不起作用,解决办法如下 1. ...

  5. win32绘制自定义类窗口导致绘制11个窗口的解决办法

    上网查了一圈也没有找到解决问题的办法,一旦创建了一个窗口,并且在过程函数中绘制窗口,尤其是一些非子窗口的自定义类窗口,都会生成11个窗口(算上主窗口就是12个),但是使用系统通用控件就不会有这种情况的 ...

  6. 遭遇input与button按钮背景图失效不显示的解决办法

    笔者从事网页前端代码页面工程师已有多年,作为一个网页重构人员常常会遇到一些莫名其妙的DIV+CSS(正确的说法是XHTML+CSS)在 IE.FireFox火狐. 谷歌浏览器CHROME.苹果浏览器S ...

  7. input与button按钮背景图失效不显示的解决办法

    今天做公司的某个网站前端网页页面的时候笔者又遇到了难解决的网页前端DIVCSS代码问题,一个平时不会发生的怪事情发生了:为网页代码中的Form表单中的input 和 button 按钮标签在CSS样式 ...

  8. js上传文件过大导致上传失败原因以及解决办法

    背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...

  9. 百度地图API 与 jquery 同时使用时报 TypeError $(...) is null错误 失效的原因及解决办法

    在引用百度地图API后,发现jquery 根据id 找不到 form.但是对于别的控件没有问题. 在排除了 html加载的问题后. 上网查找 发现以下解决办法: 原因应该是有冲突的插件. 解决办法将 ...

随机推荐

  1. Python爬虫学习——布隆过滤器

    布隆过滤器的实现方法1:自己实现 参考 http://www.cnblogs.com/naive/p/5815433.html bllomFilter两个参数分别代表,布隆过滤器的大小和hash函数的 ...

  2. Pika的设计及实现

    Pika pika是360奇虎公司开源的一款类redis存储系统,主要解决的是用户使用 Redis 的内存大小超过 50G.80G 等等这样的情况,会遇到启动恢复时间长,一主多从代价大,硬件成本贵,缓 ...

  3. [TensorBoard] Name & Variable scope

    TF有两个scope, 一个是name_scope一个是variable_scope 第一个程序: with tf.name_scope("hello") as name_scop ...

  4. Java -- POI -- 入门使用以及简单介绍

    1.创建工作簿 (WORKBOOK) HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new FileOutputSt ...

  5. ASP.NET MVC 4 - 上传图片到数据库

    这里演示如何在MVC WEB应用程序如何上传图片到数据库以及如何在WEB页面上显示图片.数据库表对应整个Model类,不单图片数据一个字段,我们从数据表的定义开始: CREATE TABLE [dbo ...

  6. css3整理--box-sizing

    box-sizing语法: box-sizing : content-box || border-box || inherit 参数取值: content-box:此值为其默认值,其让元素维持W3C的 ...

  7. 设备重力感应 window.DeviceOrientationEvent

    设备屏幕方向与运动 https://developers.google.cn/web/fundamentals/native-hardware/device-orientation/ MDN devi ...

  8. AngularJS基础01 从HelloWorld说起

    作者:arccosxy  转载请注明出处:http://www.cnblogs.com/arccosxy/ 准备工作 首先,创建一个名为index.html的HTML文件,代码如下: <!DOC ...

  9. 【Linux】解决Android Stadio报错:error in opening zip file

    报错: Failed to complete Gradle Execution Cause: error in opening zip file. 原因: 安装gradle失败引起的,往往是上网需要验 ...

  10. CentOS和Redhat单用户模式

    当系统无法启动时,可能是/etc/fstab挂载错误导致这时候可以进入单用户模式修改配置文件后重启 重启系统出现以下界面按e 选择第二栏按e健 在后面输入1回车回到上一个页面按b健启动 进入单用户模式 ...