2015-09-08 60 views
1

問題:無法捕獲發佈到TargetDatabase的項目是否失敗。Sitecore發佈管道,如果發佈失敗,如何捕獲目標數據庫

在sitecore UI中,當我從master數據庫發佈項目到web數據庫(目標數據庫)時,我想在UI顯示之前檢查發佈是否成功。

看下面的帖子從約翰·西約管道順序: http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2011/08/intercept-item-publishing-with-the-sitecore-aspnet-cms.aspx

我已經添加了以下發布項目處理器:

<processor patch:after="*[@type='Sitecore.Publishing.Pipelines.PublishItem.PerformAction, Sitecore.Kernel']" type="BOTWLibrary.Pipelines.EvaluateResult, BOTWLibrary"/> 

在EvaluateResult.cs

public class EvaluateResult : PublishItemProcessor 
{ 
    public override void Process(PublishItemContext context) 
    { 
     // check if publish was successful. 
    } 
} 

提前致謝。

回答

0

如果發佈失敗,它會將結果操作設置爲none,並給出未知發佈操作的原因。這不是發佈失敗的保證,但我認爲它是最接近你的。

public class EvaluateResult : PublishItemProcessor 
{ 
    public override void Process(PublishItemContext context) 
    { 
     // check if publish was successful. 
     if(context.Result.Operation == PublishOperation.None) 
     { 
      throw new Exception(context.Result.Explanation); 
     } 
    } 
} 
+0

@丹我試着檢查「context.Result.Operation == PublishOperation.None」,但它從來沒有陷入是否存在SQL異常if語句:_Job開始:發佈到「網絡」 |#異常:System.Reflection.TargetInvocationException:調用的目標引發了異常。 ---> System.Data.SqlClient.SqlException:無法打開數據庫_ – Kdev

+0

也許你可以稍微澄清一下你的問題。是拋出一個異常,你想要壓制錯誤? –