2

Sitecoreでプログラムで公開しようとしています。公開は正常に機能します。ただし、プログラムでこれを行っても、サイトコアキャッシュはクリアされません。プログラムでキャッシュをクリアする最良の方法は何ですか?

ステージングモジュールに付属しているWebサービスを使用しようとしています。しかし、不正な要求の例外が発生しています(例外:リモートサーバーが予期しない応答を返しました:(400)不正な要求。)。クライアント側の構成ファイルでサービスのreceivetimeoutとsendtimeoutを増やしようとしましたが、問題は解決しませんでした。何かポインタをいただければ幸いです。

私は次のコードを使用しています:

CacheClearService.StagingWebServiceSoapClient client = new CacheClearService.StagingWebServiceSoapClient();
CacheClearService.StagingCredentials credentials = new CacheClearService.StagingCredentials();

credentials.Username = "sitecore\adminuser";
credentials.Password = "***********";
credentials.isEncrypted = false;

bool s = client.ClearCache(true, dt, credentials);

次のコードを使用して公開しています。

 Database master = Sitecore.Configuration.Factory.GetDatabase("master");
 Database web = Sitecore.Configuration.Factory.GetDatabase("web");

 string userName = "default\adminuser";

 Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);

 user.RuntimeSettings.IsAdministrator = true;

 using (new Sitecore.Security.Accounts.UserSwitcher(user))
 {

     Sitecore.Publishing.PublishOptions options = new Sitecore.Publishing.PublishOptions(master, web,
     Sitecore.Publishing.PublishMode.Full, Sitecore.Data.Managers.LanguageManager.DefaultLanguage, DateTime.Now);

     options.RootItem = master.Items["/sitecore/content/"];
     options.Deep = true;
     options.CompareRevisions = true;
     options.RepublishAll = true;
     options.FromDate = DateTime.Now.AddMonths(-1);

     Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(options);
     publisher.Publish();
  }
4

5 に答える 5

5

Sitecore 6では、CacheManagerクラスにすべてのキャッシュをクリアする静的メソッドがあります。ClearAll()メソッドは廃止されました。

Sitecore.Caching.CacheManager.ClearAllCaches();
于 2010-09-20T15:26:27.383 に答える
3

これはSitecoreサポートから入手しました。すべてのキャッシュをクリアします。

Sitecore.Context.Database = this.WebContext.Database;
Sitecore.Context.Database.Engines.TemplateEngine.Reset();
Sitecore.Context.ClientData.RemoveAll();
Sitecore.Caching.CacheManager.ClearAllCaches();
Sitecore.Context.Database = this.ShellContext.Database;
Sitecore.Context.Database.Engines.TemplateEngine.Reset();
Sitecore.Caching.CacheManager.ClearAllCaches();
Sitecore.Context.ClientData.RemoveAll();
于 2010-09-23T14:05:22.573 に答える
3

Sitecore 6.3 ではもう必要ありません。リモート サーバーで変更が発生すると、キャッシュが自動的にクリアされます。また、以前のリリースを使用している場合は、すべてのキャッシュをクリアする代わりに、部分的なキャッシュ クリアを実行できます。それを行う Stager と呼ばれる無料の共有ソース コンポーネントがあります。 http://trac.sitecore.net/SitecoreStager カスタム ソリューションが必要な場合は、そこからソース コードを簡単に抽出できます。

于 2010-09-20T19:21:10.640 に答える
2

SDN経由:

HtmlCache cache = CacheManager.GetHtmlCache(Context.Site);

if (cache != null) {
  cache.Clear();
}
于 2010-09-15T03:28:25.373 に答える
2

キャッシュ (すべて) を消去するために Sitecore が提供するすぐに使用できるソリューションは、次のページで使用されています:http://sitecore_instance_here/sitecore/admin/cache.aspxコード ビハインドは次のスニペットのようになります:

foreach (var cache in Sitecore.Caching.CacheManager.GetAllCaches())
    cache.Clear();
于 2012-02-06T20:57:56.943 に答える