2014-02-11 19 views
0

我有一個奇怪的請求。我想知道是否可以讓您的C#解決方案文件將整個站點從主數據庫發佈到Web數據庫。我處於開發環境中,因爲我正在與多個人合作,因此Sitecore中的項目數量每天都在變化。這不會用於製作內容管理或內容傳送。純粹的發展。C#方法 - 發佈整個Sitecore站點

是否有可能在C#中觸發完整的站點發布,就像在內容編輯器中按發佈按鈕一樣?代碼是什麼樣的?

/sitecore/shell/Applications/Publish.aspx

我以爲這C#方法將與Sitecore.Publishing.PublishManager工作?

謝謝!

+1

你真的需要在開發中發佈嗎?我始終將我的開發實例設置爲指向主數據庫而不是Web,因此無需發佈即可預覽每個更改。 –

+0

正如@mdresser所說,默認安裝'/ app_config/include'文件夾中有一個'livemode.config'的例子。您還可以啓用'PublishAgent'按特定時間間隔運行以進行完整發布。http://sitecorebasics.wordpress.com/2011/05/17/basics-of-sitecore-scheduled-publishing/ – jammykam

+0

@mdresser我們的開發實例現在有一些工作流程的東西與我們與SQL Server和我們的Oracle實例的溝通集成在一起。在設計Sitecore站點時,我們有員工從事Oracle集成。我們只能指向Master,但之後我們無法開發我們的工作流程步驟。 –

回答

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); 
     } 
    } 
} 
+0

謝謝。它非常完美! –