已删除或未创建SQLServer OutputCache对象

时间:2011-07-03 16:06:47

标签: asp.net-mvc asp.net-mvc-3 outputcache sqlcachedependency

在这个项目中我使用MVC-3,输出缓存属性和web.config中的相应引用,希望是global.asax(下面)。我正在从共享主机运行生产,并且无法以管理员身份运行aspnet_regsql来创建适当的对象,因此我复制了AspNet_SqlCacheTablesForChangeNotification表,SP并从我的开发框中触发以设置数据库。

一般情况下,一切都很好,但是我发现大约每2或3天就会删除一次所有缓存数据库对象,而不会在应用启动时重新创建。 (没有托管合作脚本删除它们)。

为了让网站重新运行,我最终手动复制数据库对象。

如何删除对象,或者自动创建对象?

我的应用程序从global.asax开始,如下所示:

protected void Application_Start()
{
     RegisterGlobalFilters(GlobalFilters.Filters);

     SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
    SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString, "be_Posts");
    SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString, "be_PostTag");

     SiteMap.Provider.SiteMapResolve += new SiteMapResolveEventHandler(SiteMapPathExpansionResolver.OnSiteMapResolve);
    RegisterRoutes(RouteTable.Routes);
}

我的app端看起来像这样:

protected void Application_End()
    {
        SqlCacheDependencyAdmin.DisableTableForNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString, "be_Posts");
        SqlCacheDependencyAdmin.DisableTableForNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString, "be_PostTag");
        SqlCacheDependencyAdmin.DisableNotifications(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
    }

web.config条目如下所示:

<caching>
  <sqlCacheDependency enabled="true"   pollTime="10000"   >
    <databases>
      <add name=" db"
         connectionStringName="ApplicationServices"
         pollTime="10000"
      />
    </databases>
  </sqlCacheDependency>
</caching>

0 个答案:

没有答案