在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. ASP.NET中TimeSpan的用法

    一.TimeSpan常量.字段 TimeSpan.MaxValue; // 10675199.02:48:05.4775807TimeSpan.MinValue; //-10675199.02:48: ...

  2. Nginx 配置TCP代理

    Nginx 1.9 版本以后增加了stream模块,可以对tcp,udp请求进行代理和负载均衡了,今天来体验一下首先编译安装过程configure的时候增加选项 --with-stream --wit ...

  3. 【九天教您南方cass 9.1】 04 编码法Ⅱ绘制地形图

    同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取测量空间中. [点击索取cass教程]5元立得 (给客服说暗号:“ ...

  4. Java知多少(67)面向字符的输入流

    字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件. Reader和Writer是java.io包中所有字符流的父类.由于它们都是抽象类,所以应使用 ...

  5. Java如何替换所有指定(出现)的字符串?

    在Java编程中,如何替换所有指定(出现)的字符串? 以下示例演示如何使用Matcher类的replaceAll()方法替换字符串中的所有出现的子字符串. package com.yiibai; im ...

  6. 从浏览器中输入URL到页面加载的发生了什么-转载

    转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...

  7. mysql的text字段长度?mysql数据库中text字段长度不够的问题

    类型是可变长度的字符串,最多65535个字符:     可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符). MySQL ...

  8. 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法

    1. 持久化实体 Serializable save(Object obj) : 将obj对象变为持久化状态,该对象的属性将被保存到数据库. void persist(Object obj) : 将o ...

  9. linux中free命令内存分析

    Mem(物理内存分配情况)行 total:表示物理 内存总量 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 free:未被分配的内存 s ...

  10. 关于 oh-my-zsh 插件的使用(以 Sublime Text 为例)

    这里不讲 oh-my-zsh 是什么.也不讲 oh-my-zsh 插件的工作原理(太深奥,不懂 ). 讲一讲作为一个初学者,在使用过程中遇到的问题以及解决方法. 1 缘起 Ubuntu下,编辑/预览 ...