このプロジェクトでは、出力キャッシュの属性とweb.configの適切な参照と、うまくいけばglobal.asax(下記)を使用してMVC-3を使用しています。私は共有ホスティングからプロダクションを実行していて、aspnet_regsqlを管理者として実行して適切なオブジェクトを作成することはできません。そのため、AspNet_SqlCacheTablesForChangeNotificationテーブル、SP、トリガーを私の開発者ボックスからデータベースをセットアップするためにコピーしました。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>