В этом проекте я использую MVC-3, с атрибутами выходного кэша и соответствующими ссылками в web.config и, надеюсь, global.asax (ниже).Я запускаю производство с общего хостинга и не могу запустить aspnet_regsql в качестве администратора для создания соответствующих объектов, поэтому я скопировал таблицу AspNet_SqlCacheTablesForChangeNotification, SP и триггеры из моего окна dev для настройки базы данных.
В общем, все работает отлично, однако я обнаружил, что примерно каждые 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);
}
и конец моего приложения выглядит так:
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>