请看代码:复制内容到剪贴板代码:
Global.asax.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Timers;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;
//手机主题 http://www.qumiao.com
//Email:haolinks#163.com
//Author:漫步甜蜜
namespace qumiao.com
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
//定义定时器
System.Timers.Timer myTimer = new System.Timers.Timer(5000);
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
myTimer.AutoReset = true;
}
void myTimer_Elapsed(object source, ElapsedEventArgs e)
{
try
{
Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":AutoTask is Working!");
YourTask();
}
catch (Exception ee)
{
Log.SaveException(ee);
}
}
void YourTask()
{
//在这里写你需要执行的任务
}
protected void Application_End(object sender, EventArgs e)
{
Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":Application End!");
//下面的代码是关键,可解决IIS应用程序池自动回收的问题
Thread.Sleep(1000);
//这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
//string url = "http://www.qumiao.com";手机主题
string url = "http://localhost:82/111.aspx";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
}
}
}
原理:Global.asax 可以是asp.net中应用程序或会话事件处理程序,我们用到了Application_Start(应用程序开始事件)和Application_End(应用程序结束事件)。当应用程序开始时,启动一个定时器,用来定时执行任务YourTask()方法,这个方法里面可以写上需要调用的逻辑代码,可以是单线程和多线程。当应用程序结束时,如IIS的应用程序池回收,让asp.net去访问当前的这个web地址,本地测试的时候写本地地址,如http://localhost:82/111.aspx,到正式生产环境,可以改成你的web地址,如手机主题http://www.qumiao.com等。这里需要访问一个aspx页面,这样就可以重新激活应用程序。Log类是一个记录日志的一个类,下面是测试时生成的日志信息:================================================================
2008-10-30 17:46:10:AutoTask is Working!
2008-10-30 17:46:15:AutoTask is Working!
2008-10-30 17:46:20:AutoTask is Working!
2008-10-30 17:46:23:Application End!
2008-10-30 17:46:29:AutoTask is Working!
2008-10-30 17:46:34:AutoTask is Working!
从日志中发现,当手动回收IIS的应用程序池之后,计划任务还在执行,说明我们的目的达到了。
如果将Application_End中的代码注释掉,会发现Application End之后,计划任务停止工作了,如下:
================================================================
2008-10-30 18:01:34:AutoTask is Working!
2008-10-30 18:01:39:AutoTask is Working!
2008-10-30 18:01:44:AutoTask is Working!
2008-10-30 18:01:46:Application End!
局限性:可以解决应用程序池自动或者手动回收,但是无法解决IIS重启或者web服务器重启的问题,当然这种情况出现的时候不多,而且如果有人访问你的网站的时候,又会自动激活计划任务了。
相关推荐
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用的开发流程。本资源"ASP.NET第一步—基于C#和ASP.NET 2.0---光盘内容"显然是一个学习...
当应用程序部署到IIS时,可以设置应用程序池的回收策略,避免定时任务因应用程序回收而中断。同时,确保IIS配置允许长时间运行的请求。 8. **调试与日志**: 对于定时任务,添加适当的日志记录是关键,可以帮助...
- **ASP.NET编译器**:自动编译ASP.NET代码,提高应用程序性能。 - **ASP.NET调试机制**:帮助开发者定位和修复代码中的错误。 通过学习和实践ASP.NET,开发者不仅可以创建静态展示型网站,还能构建复杂的业务...
在C# .NET环境下开发此类系统,开发者可以利用ASP.NET的Web Forms或MVC架构,结合Entity Framework进行数据访问,构建出高效、灵活的后台逻辑。 开题报告是毕业设计的第一步,它涵盖了研究背景、目的、意义、技术...
ASP.NET页面生命周期管理、事件驱动模型以及自动垃圾回收机制是其核心特性。 2. **页面生命周期** ASP.NET页面经历一系列的阶段,包括初始化、加载、验证、呈现和卸载。开发者可以在这个过程中插入代码来处理特定...
C#是ASP.NET框架的主要编程语言,具有现代编程语言的特性,如面向对象、类型安全和垃圾回收等,为开发高效、稳定的Web应用提供了保障。 在【166ASP.NET辽宁旅游网站】这个项目中,我们可以推测其主要包含了以下几个...
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用的开发流程。本教程主要针对ASP.NET的基础知识,结合C#编程语言,通过实际案例来帮助...
ASP.NET的核心优势在于其强大的页面生命周期管理、自动状态管理、事件驱动模型以及丰富的控件库。 在ASP.NET中,Web Forms是一个重要组成部分,它允许开发者通过拖放控件和编写代码的方式创建交互式的网页。此外,...
Asp.net的特性包括自动垃圾回收、页面生命周期管理、视图状态、缓存机制等,这些都使得开发会员管理系统变得更加便捷。 三、会员管理模块 1. 管理员管理:管理员是系统的核心角色,负责系统的整体运行。Asp.net...
ASP.NET是微软公司推出的Web应用程序开发框架,它集成了强大的开发工具和丰富的功能,使得开发者可以高效地构建动态、数据驱动的Web应用。在本项目中,ASP.NET用于创建服务器端的页面逻辑和业务处理,提供了灵活的...
- **ASP.NET Web 应用程序**:使用ASP.NET技术开发的Web应用程序。 - **类库**:一组可重用的类集合。 - **Web 用户控件**:用户自定义的Web控件。 - **控制台应用程序**:不依赖GUI的命令行应用程序。 - **ASP.NET ...
4.1.5 ASP.NET网站和ASP.NET应用程序的区别 4.2 代码隐藏页模型的解释过程 4.3 代码隐藏页模型的事件驱动处理 4.4 ASP.NET客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态...
4.1.5 ASP.NET网站和ASP.NET应用程序的区别 4.2 代码隐藏页模型的解释过程 4.3 代码隐藏页模型的事件驱动处理 4.4 ASP.NET客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态...
【ASP.NET网上商城完整源码[201903]】是一个基于C#编程语言开发的电子商务系统,它展示了ASP.NET技术在构建大型在线购物平台中的应用。这个源码项目可能包含了从用户界面设计、商品管理、订单处理、支付接口集成到...
ASP.NET是Microsoft推出的一种Web应用程序框架,它构建在.NET Framework之上,为开发者提供了丰富的功能和高效的性能,尤其适合用于开发企业级的后台管理系统。 【标签】: 1. 毕业设计: 通常,这样的项目可能是...
在IT行业中,C# ASP.NET 模块是一个广泛使用的框架,用于构建动态、高效的企业级Web应用程序。在线银行支付模块是此类应用中的一个重要组成部分,它允许用户通过互联网进行安全、便捷的交易。以下是对这个主题的详细...
ASP.NET 是微软开发的一种Web应用程序框架,用于构建动态网站、Web应用和服务。在这个"ASP.net网上商城"项目中,开发者使用了C#编程语言来编写后台逻辑,这是一门面向对象的语言,与ASP.NET框架结合紧密,能提供高效...
在IT行业中,C# ASP.NET 模块是用于构建高效、可扩展的Web应用程序的关键工具。结合支付宝这一全球领先的支付平台,我们可以实现“支付宝”在线支付功能,为用户提供安全便捷的交易体验。以下是对这个模块及其相关...
C#是ASP.NET框架的主要编程语言,它是一种面向对象的语言,具有现代编程语言的所有特点,如类型安全、垃圾回收和强大的库支持。在创建网上书店时,C#用于编写后台代码,处理用户请求,执行数据库操作,以及实现业务...
1. **ASP.NET架构**:ASP.NET是.NET Framework的一部分,它提供了丰富的服务器控件、事件驱动模型和自动页面状态管理,使得开发者能够更高效地构建Web应用。 2. **C#编程**:ASP.NET通常与C#语言结合使用,这是一种...