Rebuild Sitecores Suchregister und Link-Datenbank in einem Hintergrundprozess
Frage
Wir haben eine inszenierten Umgebung mit 1 CMS und 3 Slave-Server
Ich möchte eine Seite auf dem Slave-Server erstellen, die veröffentlichen durch den Staging-Modul auf einem erfolgreichen genannt werden, die alle Indizes und die Links-Datenbank neu erstellen wird.
Ich weiß, dass ich verwenden können:
Globals.LinkDatabase.Rebuild(Factory.GetDatabase("web"));
den Link Datenbank neu zu erstellen.
Wie kann ich den obigen Code in einem separaten Prozess erhalten, der den Zugriff auf den Sitecores Kontext hat und auch, wie ich die Indizes alle für die Web-Datenbank Sie wieder aufzubauen - wieder in einem separaten Hintergrund-Thread.
Danke
Lösung
Ich habe über dieses Problem kommen, bevor sie mit Sitecores und nahm eine etwas andere Zielsetzung. Anstatt eine Seite zu haben, die das Staging-Modul ruft ich in der veröffentlichen angezapft. Endereignis und hinzugefügt einen benutzerdefinierten Handler den Link Datenbank neu zu erstellen
<event name="publish:end">
<handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
<sites hint="list">
<site>website</site>
</sites>
</handler>
<handler type="Sitecore.EventHandlers.CredentialCacheClearer, Sitecore.EventHandlers" method="ClearCache">
<sites hint="list">
<site>website</site>
</sites>
</handler>
// Custom Publish Action Below
<handler type="Customized.Publish.LinkDatabase, Customized" method="Process"/>
</event>
namespace Customized.Publish
{
public class LinkDatabase
{
/// <summary>
/// Rebuild the web link database.
/// </summary>
public void Process()
{
// Web db
Sitecore.Globals.LinkDatabase.Rebuild(Sitecore.Configuration.Factory.GetDatabase("web"));
}
/// <summary>
/// For invoking as an event, typically publish:end.
/// </summary>
public void Process(object sender, EventArgs args)
{
this.Process();
}
}
}