【问题标题】:How to get the user who initiated a publish action in a SDL Tridion C# TBB如何获取在 SDL Tridion C# TBB 中发起发布操作的用户
【发布时间】:2012-07-25 15:53:27
【问题描述】:

是否可以从 SDL Tridion 2011 中模块化页面模板使用的 C# TBB 访问启动发布操作的用户对象?

查看TOM.NET 6程序员参考指南,似乎我需要的属性是PublicationTransaction对象的Creator属性,但我找不到方法从 C# TBB 访问它,我看不到从 engine 或 package 对象获取当前 PublicationTransaction 的明显方法,我只能找到一种方法来获取 PublicationTransaction 对象列表使用PublishEngine 对象。

任何建议将不胜感激。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    看看 Mihai Cadaru 的这两篇博文:

    有了这两个,你应该能够找到你需要的东西。

    您在 TBB 中需要的基本功能是:

    public PublishTransaction GetPublishTransaction(Engine engine)
    {
        String binaryPath = engine.PublishingContext.PublishInstruction.
                                             RenderInstruction.BinaryStoragePath;
        Regex tcmRegex = new Regex(@"tcm_\d+-\d+-66560");
        Match match = tcmRegex.Match(binaryPath);
    
        if (match.Success)
        {
            String transactionId = match.Value.Replace('_', ':');
            TcmUri transactionUri = new TcmUri(transactionId);
            return new PublishTransaction(transactionUri, engine.GetSession());
        }
    
        return null;
    }
    

    还可能值得注意的是,与在 Publisher 中运行代码时相比,在 PreviewMode 或从模板生成器呈现编码器时,属性 engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath 将返回不同的内容。要查看 BinaryStoragePath 中的 PublishTransaction URI,您必须将 Visual Studio TBB 调试项目附加到 TcmPublisher.exe 进程,以便实际存在 PublishTransaction 对象,否则 BinaryStoragePath 将仅包含通用路径,如 ../preview .

    【讨论】:

    • 太好了,我添加了 Mihai 和 Chris 的代码,现在我有了 PublishTransaction - 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多