我有个事物需要在每天凌成1点执行,我在global文件中的application_start方法中做了个timer,代码如下
  protected void Application_Start(object sender, EventArgs e)
        {
            System.Timers.Timer myTimer = new System.Timers.Timer(180000);
            
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;//
            myTimer.AutoReset = true;
           
        } void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
           
            log.Info("----程序执行-----");
            /*
            int hour = e.SignalTime.Hour;
            int min = e.SignalTime.Minute;
            int sec = e.SignalTime.Second;            
            int iHour = 17;
            int iMin = 10;
            int iSec = 0;
            if (hour == iHour && min == iMin && sec == iSec)
            {
                //业务代码在这里
            }
               
            
        }
现在问题是想知道application_start的执行时间。
据我所知,这个方法是在应用程序开始时启动,但是我把web工程部署到IIS上面后没有执行,自己访问了一下页面,也还是没有执行,不解????
另外想知道,如果部署成功,IIS正常运行,web服务也不重启,想请问事物会不会中断

解决方案 »

  1.   

     Application_Start是在程序第一次执行的时候执行的,如果你要看到,那么,你将IIS重启,然后访问就可以
      

  2.   

    你应该使用System.Threading.Timer
    如果长时间没人访问页面,是会停止的。所以你必须在Timer里面自己访问一个简单的页面参见
    http://blog.csdn.net/net_lover/article/details/6943
      

  3.   

    我在做测试的时候,服务部署到IIS,IIS重启了,也访问了系统,但是就是没看到执行,如果单纯在VS中调试,执行是没有问题的。。
      

  4.   

    这点我考虑过,主要是用来防止应用程序池回收的情况,可以在application_end里对再次访问下一个页面但我现在的情况是服务刚部署到IIS,也重启过了也初次访问了系统,但就是看不到application_start里面的执行。所以很奇怪
      

  5.   

    IIS重启了,你还得访问下页面。.net在没人访问的时候,是不执行的。
    另外,注意时间设置
      

  6.   

    谢执行间隔谢提醒,这个很受用,确实没有考虑到这个细节。不过我现在主要问题是无法激活application_start
    我在测试时并没有指定具体执行时间,timer间隔时间为1000ms,但是还是没用
      

  7.   

    你重启iis后必须访问下网站,否则是不执行的
      

  8.   

    另外,是否执行你是怎么判断的?也可能你判断方法或者执行的任务代码是错误的。iis环境和开发环境是有本质不同的,不要以为开发环境的代码正确就意味着iis里面也是正确的。你要简化测试方法
      

  9.   


    你是监视了application_start还是只是监视了你的 myTimer ? 后者应该声明为static的。如果说前者没有执行,可能是网站上一些文件新旧混杂,那么最好清空你的解决方案,清空无关的dll文件,重新发布(重新编译)一次。发布到网站上之后,最好使用一个FTP同步程序把那些本地发布目录里没有但是网站上有的文件全都删除掉(除了app_data目录下的文件)。
      

  10.   

    也非常感谢你的回复,本来是打算另写一个winform应用,依靠windows计划任务来调用,但觉得麻烦。
    现在问题已经搞定,具体原因不好说,换了台机器进行编译和调试就搞定了。