我有一个奇怪的请求。我想知道是否有可能让您的C#解决方案文件将整个站点从主数据库发布到Web数据库。我在我的开发环境中,当我与多人合作时,Sitecore中的项目数量每天都在变化。这不是用于生产内容管理或内容交付的东西。纯粹的发展。
是否可以像在内容编辑器中按发布按钮一样在C#中触发完整的站点发布?代码会是什么样的?
/sitecore/shell/Applications/Publish.aspx
我认为这个C#方法适用于Sitecore.Publishing.PublishManager?
谢谢!
答案 0 :(得分:4)
我们也在我们的项目上使用它...... 我们将它放在常规的.aspx页面中。我希望有所帮助:
protected void Page_Load(object sender, EventArgs e)
{
PublishMode publishMode = PublishMode.Full;
using (new Sitecore.SecurityModel.SecurityDisabler())
{
var webDb = Sitecore.Configuration.Factory.GetDatabase("web");
var masterDb = Sitecore.Configuration.Factory.GetDatabase("master");
try
{
foreach (Language language in masterDb.Languages)
{
//loops on the languages and do a full republish on the whole sitecore content tree
var options = new PublishOptions(masterDb, webDb, publishMode, language, DateTime.Now) { RootItem = masterDb.Items["/sitecore"], RepublishAll = true, Deep = true };
var myPublisher = new Publisher(options);
myPublisher.Publish();
}
}
catch (Exception ex)
{
Sitecore.Diagnostics.Log.Error("Could not publish", ex);
}
}
}