ASP.NET MVC 计划任务(不使用外接程序,.net内部机制实现)
在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务.
以下讲解步骤:
1. 在Global.asax 文件中作如下修改
|
1
2
3
4
5
6
7
8
9
10
11
|
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 //定义定时器 //1000表示1秒的意思 System.Timers.Timer myTimer = new System.Timers.Timer(1000); //TaskAction.SetContent 表示要调用的方法 myTimer.Elapsed += new System.Timers.ElapsedEventHandler(TaskAction.SetContent); myTimer.Enabled = true; myTimer.AutoReset = true; } |
Application_Start 只有在访问一次之后才会触发.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
void Session_End(object sender, EventArgs e) { //下面的代码是关键,可解决IIS应用程序池自动回收的问题 System.Threading.Thread.Sleep(1000); //触发事件, 写入提示信息 TaskAction.SetContent(); //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start //使用您自己的URL System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse(); System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流 // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。 // 如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。} |
Session_End 中的方法主要是解决IIS应用程序池自动回收的问题.
2. 添加计划任务类 TaskAction
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Timers;/// <summary>///Action 的摘要说明/// </summary>public static class TaskAction{ private static string content = ""; /// <summary> /// 输出信息存储的地方. /// </summary> public static string Content { get { return TaskAction.content; } set { TaskAction.content += "<div>" + value+"</div>"; } } /// <summary> /// 定时器委托任务 调用的方法 /// </summary> /// <param name="source"></param> /// <param name="e"></param> public static void SetContent(object source, ElapsedEventArgs e) { Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } /// <summary> /// 应用池回收的时候调用的方法 /// </summary> public static void SetContent() { Content = "END: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); }} |
3. 执行结果输出[Default.aspx] (此步仅仅为了观看结果才写的页面)
在Default.aspx页面 添加
<div>
<%=TaskAction.Content %>
</div>
4. 结果输出

欢迎大家一起探讨
ASP.NET MVC 计划任务(不使用外接程序,.net内部机制实现)的更多相关文章
- 利用ASP.NET MVC源代码调试你的应用程序[转]
由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试AS ...
- [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
- ASP.NET MVC项目中App_Code目录在程序应用
学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...
- ASP.NET MVC计划任务实现方法(定时执行某个功能)
系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
- 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标
通常我们需要监测ASP.NET MVC 或 Web API 的应用程序的性能时,通常采用的是自定义性能计数器,性能计数器会引发无休止的运维问题(损坏的计数器.权限问题等).这篇文章向你介绍一个新的替代 ...
- [译]Asp.net MVC 之 Contorllers(一)
Asp.net MVC contorllers 在Ajax全面开花的时代,ASP.NET Web Forms 开始慢慢变得落后.有人说,Ajax已经给了Asp.net致命一击.Ajax使越来越多的控制 ...
- 新作《ASP.NET MVC 5框架揭秘》正式出版
ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...
- 扩展 ASP.NET MVC 模型扩展 – ASP.NET MVC 4 系列
大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来. ASP.NET ...
随机推荐
- Spark 论文篇-Spark:工作组上的集群计算的框架(中英双语)
论文内容: 待整理 参考文献: Spark: Cluster Computing with Working Sets. Matei Zaharia, Mosharaf Chowdhury, Micha ...
- MySQL累积求和
有如下表 id money 1 10 2 20 3 30 4 40 求出如下数据 id money cum 1 10 10 2 20 30 3 30 60 4 40 100 建表 CREA ...
- C++ 类占用空间计算方式
1.一个类占用的空间主要是属性占用空间,而成员函数一般不占用空间,但是虚函数占用空间,需要说明的是,无论多少个虚函数,只要占用4个字节即可,也就是索引指向一个虚拟表的首位置.另外需要说明的是占用空间都 ...
- iOS开发 关于启动页和停留时间的设置
引言: 在开发一款商业App时,我们大都会为我们的App设置一个启动页. 苹果官方对于iOS启动页的设计说明: 为了增强应用程序启动时的用户体验,您应该提供一个启动图像.启动图像与应用程序的首屏幕看起 ...
- hdoj:2032
#include <iostream> #include <string> using namespace std; int main() { int n; ][]; ; i ...
- Java知多少(86)文本框和文本区的输入输出
在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...
- MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置
一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...
- Ogre2.1 Hlms与渲染流程
在我前面三篇说明Ogre2.x的文章里,第一篇大致说了下Hlms,第二篇说了下和OpenGL结合比较紧的渲染,本文用来说下Hlms如何影响渲染流程中,因为有些概念已经在前面二文里说过了,本文就不再提, ...
- java-信息安全(十二)-数字签名【Java证书体系实现】
概述 信息安全基本概念 数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上 ...
- db2 索引
索引:可通过 SYSCAT.INDEXES JOIN SYSCAT.INDEXCOLUSE来查询索引的字段有升序ASC和降序DESC,分别表示为SYSCAT.INDEXES的COLNAMES中索引字段 ...