IIS自动关闭我的应用程序?

时间:2013-05-25 11:22:19

标签: asp.net iis

我刚注意到IIS在闲置20分钟后自动关闭了我的ASP.NET Web应用程序。该网站托管在Godaddy.com上。

下面是记录Application_Start和Application_End方法的Global类。我上传的图片是我看到的结果。

我在06:22:01的最后一次电话会议后于2013-05-24 06:42:40关闭了。 (20分钟,华...)
一天后,我在2013-05-25 03:05:27再次打电话,网站被唤醒了。

奇怪? 我不希望我的网站睡觉。有没有办法让它始终保持理智?

public class Global : HttpApplication
{
    private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        log.Debug("Application_AuthenticateRequest -> " + base.Context.Request.Url);
    }

    protected void Application_End(object sender, EventArgs e)
    {
        log.Info("Application_End");
    }

    protected void Application_Start(object sender, EventArgs e)
    {
        log.Info("Application_Start");
    }
}

IIS turned off my application automatically?

1 个答案:

答案 0 :(得分:3)

如果您没有任何时间保存资源请求,IIS / asp.net会关闭应用程序。

现在这通常在服务器端处理,如果你想避免它,但在你的情况下你不能干扰IIS设置,所以一个技巧是创建一个读取每10分钟左右一页的计时器。 / p>

您在应用程序启动时启动它,并且在应用程序关闭时不要忘记停止它。

// use this timer (no other)
using System.Timers;

// declare it somewhere static
private static Timer oTimer = null;

protected void Application_Start(object sender, EventArgs e)
{
    log.Info("Application_Start");

    // start it when application start (only one time)
    if (oTimer == null)
    {
        oTimer = new Timer();

        oTimer.Interval = 14 * 60 * 1000; // 14 minutes
        oTimer.Elapsed += new ElapsedEventHandler(MyThreadFun);
        oTimer.Start();
    }   
}

protected void Application_End(object sender, EventArgs e)
{
    log.Info("Application_End");

    // stop it when application go off
    if (oTimer != null)
    {
        oTimer.Stop();

        oTimer.Dispose();
        oTimer = null;
    }   
}


private static void MyThreadFun(object sender, ElapsedEventArgs e)
{
    // just read one page
    using (System.Net.WebClient client = new System.Net.WebClient())
    {
        client.DownloadData(new Uri("http://www.yoururl.com/default.aspx"));
    }
}

一个注意事项,除非您需要,否则不要使用此技巧,因为您创建了一个永生的线程。通常谷歌会读取网页并保持“温暖”,如果你有一个非常新的网站谷歌和其他搜索引擎没有开始索引,或者如果你有一个只有两页永不改变。

因此我不建议这样做 - 并且关闭您的网站并节省资源并不坏,并且您的网站可以从任何被遗忘的开放内存中清除并重新开始......

类似文章。

Keep your ASP.Net websites warm and fast 24/7
Application Initialization Module for IIS 7.5
Auto-Start ASP.NET Applications (VS 2010 and .NET 4.0 Series)