如何让一个 Web 应用程序,不用人访问也可以一直保持运行?哪怕IIS回收后会自动启动起来。计算机重启后也会自动起来?我做了一个Web应用程序,是一个定时执行任务的,但是很少会有人来访问,为了保正任务可以稳定执行,请高人指点一下。我选择Web应用程序是因为他可以和用户很好的交互效果。

解决方案 »

  1.   

    1 将你的网站部署到iis上,启动以后,你的项目就已经算是运行状态了。跟有没有人访问没关系。2 在没有用户操作的情况下,项目定时执行操作实现的方法有很多种。可以创建一个Timer参考
    也可以在服务器的控制面板中建任务计划;数据库也有定时执行任务;看看哪种适合你
      

  2.   

    可以在web应用程序文件夹下放个控制台程序,主要作用就是每隔一个周期向自己的页面发送web请求。这个控制台程序能自动往windows启动项里添加一个自身的快捷方式。
      

  3.   

    你这是拿着雨伞去炒菜,工具没用对地方.
    "我做了一个Web应用程序,是一个定时执行任务的,但是很少会有人来访问,为了保正任务可以稳定执行,请高人指点一下。"保证稳定执行,可以写Windows Service."我选择Web应用程序是因为他可以和用户很好的交互效果。"
    单一职责啊~!
    一个定时任务,为什么还需要兼顾着跟用户去打交道?
    典型的职责不明确.
      

  4.   

    你指的是用户登陆后不超时么?定时模拟访问你的页面。保证Session不过期。
      

  5.   

    web条件很特殊 你想做的 可能是 不允许实现的至少现在不允许
      

  6.   


    我是用的Timer,但是20分钟无人访问页面,程序自动Application_End 了。我的Timer自然也不工作了
      

  7.   


    嗯,我也有这个想法,想用一个Windows服务定时去访问App,让Application不要End,只不过觉得这个方法好像有点土
      

  8.   

    参见 http://v.ku6.com/playlist/index_3625418.html
      

  9.   

    最简单的方便,用数据库的JOB去掉
      

  10.   

    打错字了,应该是用SQL SERVER中的JOB去调。也就是执行一个http的请求。
      

  11.   


    之前也被该问题烦,以下不是最好处理方式,web Timer最好不要用,用C/S做或数据库定时任务。
     void Application_End(object sender, EventArgs e) 
        {
            //  在应用程序关闭时运行的代码
            //如果出错,删除下面代码
            //下面的代码是关键,可解决IIS应用程序池自动回收的问题
            System.Threading.Thread.Sleep(1000);
            ////这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
                string url = "http://localhost:82/111.aspx";
            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();//得到回写的字节流        //在此添加其它代码
        }
      

  12.   

    建议做个windows服务或者做个小程序
      

  13.   

     可以实现。 
     在global文件里面写个线程Thread thread ;void Appcliation_Start()
    {
        thread =  new Thread(new ThreadStart(Fun));
    thread .start();
    }void Fun()
    {
       while(true)
    {
     // 你要做的事情}}
      

  14.   


    那还不如直接写个windows服务去执行那些操作。