在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
    string url = "http://henw.cnblog.com";
    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内部机制实现)的更多相关文章

  1. 利用ASP.NET MVC源代码调试你的应用程序[转]

    由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试AS ...

  2. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

  3. ASP.NET MVC项目中App_Code目录在程序应用

    学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...

  4. ASP.NET MVC计划任务实现方法(定时执行某个功能)

    系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...

  5. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  6. 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标

    通常我们需要监测ASP.NET MVC 或 Web API 的应用程序的性能时,通常采用的是自定义性能计数器,性能计数器会引发无休止的运维问题(损坏的计数器.权限问题等).这篇文章向你介绍一个新的替代 ...

  7. [译]Asp.net MVC 之 Contorllers(一)

    Asp.net MVC contorllers 在Ajax全面开花的时代,ASP.NET Web Forms 开始慢慢变得落后.有人说,Ajax已经给了Asp.net致命一击.Ajax使越来越多的控制 ...

  8. 新作《ASP.NET MVC 5框架揭秘》正式出版

    ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...

  9. 扩展 ASP.NET MVC 模型扩展 – ASP.NET MVC 4 系列

           大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来.        ASP.NET ...

随机推荐

  1. Spark 论文篇-Spark:工作组上的集群计算的框架(中英双语)

    论文内容: 待整理 参考文献: Spark: Cluster Computing with Working Sets. Matei Zaharia, Mosharaf Chowdhury, Micha ...

  2. 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 ...

  3. C++ 类占用空间计算方式

    1.一个类占用的空间主要是属性占用空间,而成员函数一般不占用空间,但是虚函数占用空间,需要说明的是,无论多少个虚函数,只要占用4个字节即可,也就是索引指向一个虚拟表的首位置.另外需要说明的是占用空间都 ...

  4. iOS开发 关于启动页和停留时间的设置

    引言: 在开发一款商业App时,我们大都会为我们的App设置一个启动页. 苹果官方对于iOS启动页的设计说明: 为了增强应用程序启动时的用户体验,您应该提供一个启动图像.启动图像与应用程序的首屏幕看起 ...

  5. hdoj:2032

    #include <iostream> #include <string> using namespace std; int main() { int n; ][]; ; i ...

  6. Java知多少(86)文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

  7. MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置

    一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...

  8. Ogre2.1 Hlms与渲染流程

    在我前面三篇说明Ogre2.x的文章里,第一篇大致说了下Hlms,第二篇说了下和OpenGL结合比较紧的渲染,本文用来说下Hlms如何影响渲染流程中,因为有些概念已经在前面二文里说过了,本文就不再提, ...

  9. java-信息安全(十二)-数字签名【Java证书体系实现】

    概述 信息安全基本概念 数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上 ...

  10. db2 索引

    索引:可通过 SYSCAT.INDEXES JOIN SYSCAT.INDEXCOLUSE来查询索引的字段有升序ASC和降序DESC,分别表示为SYSCAT.INDEXES的COLNAMES中索引字段 ...