【问题标题】:Sitecore publish pipeline, how to catch if publish failed to target DatabaseSitecore 发布管道,如果发布未能以目标数据库为目标,如何捕获
【发布时间】:2015-09-08 00:47:37
【问题描述】:

问题:如果将项目发布到 TargetDatabase 失败,则无法捕获。

在 sitecore UI 中,当我将项目从主数据库发布到 Web 数据库(目标数据库)时,我想在 UI 中显示之前检查发布是否成功。

查看 John West 关于管道订单的以下帖子: 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.
    }
}

提前致谢。

【问题讨论】:

    标签: sitecore


    【解决方案1】:

    如果发布失败,它会将结果操作设置为无,并给出未知发布操作的原因。这并不能保证发布失败,但我认为这是最接近的结果。

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

    【讨论】:

    • @Dan 我试图检查 'context.Result.Operation == PublishOperation.None' 但是,如果有 sql 异常,它永远不会进入 if 语句:工作开始:发布到'web'|#Exception: System.Reflection.TargetInvocationException: 调用的目标已引发异常。 ---> System.Data.SqlClient.SqlException: 无法打开数据库
    • 也许您可以稍微澄清一下您的问题。是否引发了异常并且您想要抑制错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多