我在网站的Global.asax中添加了System.Timers.Timer,作用是可以定时运行某段代码,而且不管系统是否有被访问都可以进行。
但是系统只在网页被访问时才进行这个定时操作。
是不是ASP.NET的定时器本来就是这样?如果我想实现上面说的功能,应该怎么做呢?
是不是一定要做个WEB服务才可以?

解决方案 »

  1.   

    Global应该就是程序执行才起作用的
    lz可以尝试将实现的计时功能弄个windows service
      

  2.   

    我对windows service不太了解,能不能有折中方法?
      

  3.   

    写个WinForm放在服务器上运行...
      

  4.   

    还要看你的这个System.Timers.Timer放在Global.asax的什么事件中?
      

  5.   

    IIS 进程池回收后,如果没有访问,此站点不会被运行。
    当然 Timer 也不会启动。楼上的 WebService 也是解决方案,就是不断访问他。回收了也会启动。
      

  6.   

    那WebService怎么开发?开发后怎样放到服务器运行呢?
    提供相关资料连接也好,最好基础点,偶很菜的啊~
      

  7.   

      通过Web的方式是无法实现的,建议建立一个Windows 服务,把Windows 服务的属性设置为开机自动启动,
    .net建立Windows 服务非常简单
      

  8.   

    1 如果你没有接触过 WebService, 建议找相关资料学习一下,这里大家都不好描述的。  资料很多的。
    2 如果你不想通过 WebService, 可以用楼上 nicesky1 的方法,做一个 windows service.
    3 如果也不想用 windows 服务,还可以:
      (1) 如果逻辑可以放到数据库,如 SQLServer,那么让 SQLServer 建一个自动任务,定期执行。
      (2) 好可以做一个 Win32 程序,窗体上放一个 WebBrowser 控件,然后弄个 Timer 定时访问你的网站,网站也不会停。
      

  9.   

    我对WebService完全不了解, windows 服务也不熟。
    如果需要在这两中方案中选择,那么那一种时间上可能比较快一点呢?
    就是那一种容易实现,不需要那么多基础知识要补充的?
      

  10.   

    服务应该是最优的了吧,其实WebService和服务都挺简单,不做复杂的很容易上手
    另外如果楼主的时间间隔比较大的话,比如说一天,或者几小时执行一次,可以做成一个控制台程序,然后用计划任务来调用
      

  11.   

    static Timer Work;public void Initaa() 
    {   
    // 新建一个TimerCallback委托,具体要执行的方法在Sched中  
    StartBuildHTMl = new Timer(new TimerCallback(Work),null,5000,1800000);  //iis启动后5秒后执行work函数,之后每隔30分钟在执行一次

    private void Work(object sender) 
    {
       //要执行的工作。
    }把这个放在Application_Start中,只要你把网站放到IIS上,他就会工作的
    protected void Application_Start(Object sender, EventArgs e)
    {
    Initaa();
    }
      

  12.   

    StartBuildHTMl是什么东东,系统提示在命名空间中不存在啊~
    你说的“具体要执行的方法在Sched中”是什么意思啊?
      

  13.   

    谢谢大家,我现在想用windows 服务来实现,但是我不知道怎样在windows 服务项目中调用Web项目的设置信息,例如调用Web.config中的内容。新开了一个帖子(http://topic.csdn.net/u/20080829/14/89f7e23f-6f97-4f1c-8da7-986f4214d3ba.html),麻烦大家帮帮忙。