1

이 프로젝트에서 출력 캐시 특성과 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> 

답변

0

그래서 저는 효과적으로 Application_End에서 Disables를 주석 처리/제거함으로써이를 해결했습니다. 오픈 핸들을 사용하여 SQL Server를 종료한다는 것을 읽었지만 작동 한 다른 솔루션을 찾지 못했습니다. create 트리거 및 startup 이벤트를 추가하여 테이블 및 기타 여러 가지 방법을 다시 만들려고 시도했지만 Disables 만 제거하면 작동하는 것처럼 보였습니다.

내가 쓴 공유 서버와 db 서버에 문제가 없기를 바라지 만 호스팅 회사에서 저에게 불평하지 않았으며 이러한 접근 방법이 합병증을 일으키는 지 알 수있는 방법이 없습니다. 해당 종류의 모니터링에 대한 액세스 권한을 부여하십시오.

관련 문제