이 프로젝트에서 출력 캐시 특성과 web.config 및 해당되는 경우 global.asax (아래)의 적절한 참조를 사용하여 MVC-3을 사용하고 있습니다. 나는 공유 호스트에서 프로덕션을 실행 중이며 aspnet_regsql을 관리자로 실행하여 적절한 객체를 만들 수 없으므로 AspNet_SqlCacheTablesForChangeNotification 테이블, SP 및 트리거를 내 dev에서 데이터베이스 설정까지 복사했습니다.SQLServer OutputCache 개체가 삭제되었거나 생성되지 않았습니다.
일반적으로 모든 것이 잘 작동하지만 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>