none
如何避免IIS6定期结束回收ASP.NET应用程序进程 RRS feed

  • 问题

  • 由于程序需要,需要在ASP.NET程序中跑一个后台进程,现有程序如下。

        public class Global : System.Web.HttpApplication
        {

            void Application_Start(object sender, EventArgs e)
            {
                // 在应用程序启动时运行的代码

                PGSpRefresh t1 = new PGSpRefresh();

                Thread PGSpThread = new Thread(t1.SMSQueue_BG_UMessage);
                PGSpThread.Start();

            }

            void Application_End(object sender, EventArgs e)
            {
                //  在应用程序关闭时运行的代码

            }

    程序在开始的时候能够很好的运行,不过遇上一个比较棘手的问题,由于该网站平时没有人访问,只是跑这样一个后台进程,所以IIS6中一般会自动结束进程如果没有人调用的话。

    现在如何能够避免被结束,或者被结束之后马上能够通过HttpWebRequest请求来再次激活网站?

    我先在能够想到的两种方法是1.单独用另一网站或者另一个WinForm来做定时访问asp。net刷新工具自动定时访问,如果被结束也能够通过这样的方式再次启动。2.是否可以在        void Application_End(object sender, EventArgs e)中加入HttpWebRequest来在网站即将结束的时候自己请求自己来避免被结束,如果可以,这样的方式是否可以100%可靠。

    请大家指点,谢谢。

    2013年1月13日 2:59

答案

全部回复

  •             PGSpRefresh t1 = new PGSpRefresh();
     
                Thread PGSpThread = new Thread(t1.SMSQueue_BG_UMessage);
                 PGSpThread.Start();
    

    这个为什么不注册成一个服务,这样想运行多久都行啊。
    2013年1月14日 2:06
  • 这个是asp.net(新IIS)的新特性。你可以在你的代码中定时访问(HttpWebRequest)一个简单的页面避免没人访问导致的回收

    【孟子E章】


    2013年1月14日 8:39
    版主