首页 » Application_Start里的代码不执行

Application_Start里的代码不执行

2017/6/15 15:00:34 921 梦影雾花

最近需要做一个定时发送邮件的程序,在网上搜找到如下代码

protected void Application_Start(object sender, EventArgs e)
{
    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
    // 设置引发时间的时间间隔 此处设置为1秒 
    aTimer.Interval = 1000;
    aTimer.Enabled = true;
}
private void TimeEvent(object source, ElapsedEventArgs e)
{
    // 得到 hour minute second 如果等于某个值就开始执行 
    int intHour = e.SignalTime.Hour;
    int intMinute = e.SignalTime.Minute;
    int intSecond = e.SignalTime.Second;
    // 定制时间,在00:00:00 的时候执行 
    int iHour = 11;
    int iMinute = 02;
    int iSecond = 00;

    // 设置 每天的00:00:00开始执行程序 
    if (intHour == iHour && intMinute == iMinute && intSecond == iSecond)
    {
        //发送邮件程序                
    }
}

我在本机调试的时候没有问题,可放到服务器上并没有在规定的时件收到邮件,写了个日志才发现Application_Start根本没有执行。最后我查了下Application_Start的执行条件才发现之前我理解错了。

    Application_Start:第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义。

    换句话来说我只发布了程序,没有去访问网站里的任意一个资源,那么它就不会执行,问题也就在这里。

    那么每发布一次程序就要去人工访问网站,显然有点哆嗦,我们可以这样来做

protected void Application_End(object sender, EventArgs e)
{
    // 在应用程序关闭时运行的代码   
    // 解决应用池回收问题   
    System.Threading.Thread.Sleep(5000);
    string strUrl = "网站地址";
    System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl);
    System.Net.HttpWebResponse _HttpWebResponse = (System.Net.HttpWebResponse)_HttpWebRequest.GetResponse();
    System.IO.Stream _Stream = _HttpWebResponse.GetResponseStream();//得到回写的字节流 
}

    这样就搞定了。

评论列表
新浪微博
微信