HttpRuntime Cache停止工作

时间:2015-07-23 19:26:47

标签: c# asp.net

我使用httpruntime缓存每隔30分钟运行一段代码。该站点托管在共享环境中。它工作正常,直到上周。没有代码被更改,但它停止了工作。

除了“已启动应用程序”电子邮件,我还没有收到任何其他电子邮件。关于如何找到问题的任何建议?

感谢。

    void Application_Start(object sender, EventArgs e)
    {
        RegisterCache();
        SendEMail("Application Started");
    }

    private void RegisterCache()
    {
        try
        {
            HttpRuntime.Cache.Add("dummy", "dummy", null, DateTime.UtcNow.AddMinutes(30), 
                              Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, 
                              new CacheItemRemovedCallback(OnCacheItemRemoved));
        }
        catch (Exception ex)
        { 
            SendEMail(ex.Message);
        }
    }

    public void OnCacheItemRemoved(string key, object value, CacheItemRemovedReason reason)
    {
        try
        {
            RegisterCache();
            // ... get data from the interweb, email data...
        }
        catch (Exception ex)
        {
            SendEMail(ex.Message);
        }
        finally
        {
            SendEMail("Cache Item Removed");
        }
    }

    void Application_End(object sender, EventArgs e)
    {
        SendEMail("Application Ended");
    }

1 个答案:

答案 0 :(得分:1)

一个可能的原因是IIS应用程序池中的空闲超时设置。 默认情况下,它设置为20分钟。 这将导致您的网站“关闭”,并且您的缓存删除事件不会触发。