我一直在嘗試通過已在Sitecore編輯器中更改的代碼發佈項目。如果我以編程方式更新字段值併發布這些更改,但它工作正常。如何以編程方式發佈已使用編輯器更新的Sitecore項目
我們的內容管理編輯定期在編輯器中進行更改,而不必發佈它們。我們希望爲他們提供一種功能,可以單擊一個按鈕來發布所有相關更改並清除Sitecore緩存。
我不想發佈整個網站,只有幾個預定義的項目。
我們正在使用Sitecore.NET 6.4.1(rev。110720)。我無法更新Sitecore。
我試圖這些選項:
選項1:實例化新發布對象
Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Database web = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Publishing.PublishOptions publishOptions = new Sitecore.Publishing.PublishOptions(master,
web,
Sitecore.Publishing.PublishMode.SingleItem,
item.Language,
System.DateTime.Now);
Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(publishOptions);
publisher.Options.RootItem = item;
publisher.Options.Deep = true;
publisher.Publish();
選項2:使用靜態publishmanager
Database db = Sitecore.Configuration.Factory.GetDatabase("web");
Database[] databases = new Database[1] { db };
Sitecore.Handle publishHandle = Sitecore.Publishing.PublishManager.PublishItem(item, databases, db.Languages, true, false);
兩種方法都包裝在使用聲明中使用相同的a內容管理編輯使用的ccount。
string domainUser = @"sitecore\admin";
if (Sitecore.Security.Accounts.User.Exists(domainUser))
{
Sitecore.Security.Accounts.User user =
Sitecore.Security.Accounts.User.FromName(domainUser, false);
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
// publish code ...
}
}
的日誌不就顯示什麼值得一提的,我可以告訴
ManagedPoolThread #7 13:41:46 INFO Job started: Publish to 'web'
ManagedPoolThread #7 13:41:46 INFO HtmlCacheClearer clearing HTML caches for all sites (5).
ManagedPoolThread #7 13:41:46 INFO HtmlCacheClearer done.
ManagedPoolThread #7 13:41:46 INFO Job ended: Publish to 'web' (units processed: 2)
ManagedPoolThread #5 13:41:46 INFO Job ended: Publish (units processed:)
這是definetely不是一個緩存的問題,因爲在編輯器中手動發佈清理緩存時前以編程方式,更改在代碼中可見。
所以我正在尋找一種編程方式來發布更新項目的預定義列表,無視編輯的方式。
在您的選項2(publishmanager)中,您正在發佈到master數據庫。你可以試試用web數據庫作爲目標嗎?另外,確保你使用正確的數據庫上下文(也可以使用數據庫切換器來掌握數據庫)。 – Gatogordo
似乎也不起作用。我添加了一個DatabaseSwitcher並將數據庫更改爲web,也嘗試了另一種方式。 – redrobot
我使用選項2,你可以更新與網絡問題中的代碼?,其他發佈目標並不總是「網絡」,最好不要使用這個硬編碼,2)如果父網站不存在於網絡數據庫中,不會發布 –