我使用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");
}
答案 0 :(得分:1)
一个可能的原因是IIS应用程序池中的空闲超时设置。 默认情况下,它设置为20分钟。 这将导致您的网站“关闭”,并且您的缓存删除事件不会触发。