如何在 Tridion 中获取当前登录用户的 tcmid?

2024-04-25

    private void Subscribe()
    {
        EventSystem.Subscribe<User, LoadEventArgs>(GetInfo, EventPhases.Initiated);
    }

    public void GetInfo(User user, LoadEventArgs args, EventPhases phase)
    {
        TcmUri id = user.Id;

        string name = user.Title;
        Console.WriteLine(id.ToString());
        Console.WriteLine(name);

    }

我编写了上面的代码并将程序集添加到 Tridion 服务器的配置文件中,但用户登录时没有出现控制台窗口


您最初订阅的事件是任何可识别对象及其任何操作的处理阶段,基本上会在 SDL Tridion CMS 中发生的每个事务上触发,因此它不会向您提供用户登录时间的任何指示(这基本上是一直发生的一切)。

用户登录后发生的第一件事可能是读取其用户信息和应用程序数据。所以你应该尝试的是:

private void Subscribe()
{
    EventSystem.Subscribe<User, LoadEventArgs>(GetInfo, EventPhases.Initiated);
}

public void GetInfo(User user, LoadEventArgs args, EventPhases phase)
{
    TcmUri id = user.Id;
    string name = user.Title;
}

但请记住,这也会由其他操作触发,例如查看历史记录、检查发布事务等等。我不知道如何区分此操作是用户登录的一部分,因为没有专门为此触发的事件。

您可能想检查是否可以在中找到特定于登录的任何内容LoadEventArgs例如在其ContextVariables, EventStack, FormerLoadState or LoadFlags.

Edit:

请注意,事件系统在 SDL Tridion 核心内部运行,因此您在任何地方都不会看到控制台窗口弹出。如果要记录信息,可以包含以下 using 语句:

using Tridion.Logging;

添加引用后Tridion.Logging.dll您可以在您的..\Tridion\bin\client目录。然后您可以在代码中使用以下日志记录语句:

Logger.Write("message", "name", LoggingCategory.General, TraceEventType.Information); 

您可以在 Tridion 事件日志中找到该信息(前提是您已将日志记录级别设置为显示信息消息)。

但这里最好的选择可能是调试事件系统,这样您就可以在事件触发时直接检查对象。Here http://yatb.mitza.net/2012/03/debugging-tridion-2011-event-system.html你可以找到一个不错的博客文章 http://yatb.mitza.net/2012/03/debugging-tridion-2011-event-system.html关于如何设置事件系统的调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Tridion 中获取当前登录用户的 tcmid? 的相关文章

  • 将非模板基类向下转型为模板化派生类:可能吗?

    我正在为游戏实现一个事件系统 它使用事件队列和数据结构来保存给定事件类型的所有注册事件处理程序 到目前为止 注册处理程序工作得很好 但是当涉及到取消注册它们时 例如 当游戏对象被销毁时会发生这种情况 我在模板和转换方面遇到了一些麻烦 我将
  • 在 javascript 原型事件处理程序中保留“this”引用[重复]

    这个问题在这里已经有答案了 正确的保存方法是什么this存储在对象原型内的事件处理程序中的 javascript 引用 我不想创建像 this 或 that 这样的临时变量 而且我不能使用像 jQuery 这样的框架 我看到很多人谈论使用
  • JavaFX 2 XYChart.Series 和 setOnMouseEntered

    是否可以设置 XYChart Series 的实例来作用于 setOnMouseEntered 在我看来 使其工作的一个前提条件是实现 EventTarget 接口 至于JavaFX XYChart Series 当光标触摸黄线时 我想突出
  • 本机 C++ 通过代理 C++ 托管 dll 使用 C# dll

    这相当复杂 所以请耐心听我说 我有一个用本机 仅限 Win32 C 编码的第 3 方程序 目标 作为目标设计的一部分 它实现了一个 dll 插件系统 本机 DLL 当放置在程序的 ext 目录中时 由目标加载 然后 目标根据需要调用每个 D
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • DLL 需要访问其应用程序的符号

    在 C 中 DLL 是否可以访问加载它的应用程序的某些符号 我有一个加载插件 dll 的应用程序 这些插件需要访问该应用程序的某些API 是否可以在不创建共享此 API 的新 DLL 的情况下实现此目的 函数指针结构适合这种情况吗 示例 主
  • 为什么 Boost.Asio 不支持基于事件的接口?

    我正在尝试理解 Boost Asio 目的是潜在地使用条件变量与 Boost Asio 结合来实现信号系统 我看过其他 StackOverflow 问题boost asio异步等待条件变量 https stackoverflow com q
  • MSBuild 命令行 - 添加 dll 引用

    我使用 makefile 来编译我的 C 项目 在这个makefile中 我创建了一个库tools dll 调用csc exe OK 现在 我想在我的项目中使用这个 dll 由于某些原因 我必须使用使用 csproj 文件的 MSBuild
  • 对不同的 Windows 窗体控件使用相同的事件处理程序是否安全?

    这是好的做法吗 我有 3 个 DataGridView 我想要一个允许用户通过单击列标题对数据进行排序的工具 我本来可以为每个 DataGridView 的 ColumnHeaderMouseClick 事件都有一个事件处理程序 但我做了一
  • 如何使用 C# 和 .NET 中的 C++ 库?

    我的问题与 DLL 如何导出 C 类和泛型方法 关于没有 C 并行的 C 语言功能 密切相关 我相信你可以在extern C 只需引用 DLL 并使用 DLLImport 即可从 C 中阻止 但是您可以实例化模板化的 C 类型吗 如果 C
  • 为什么以及如何避免事件处理程序内存泄漏?

    通过阅读 StackOverflow 上的一些问题和答案 我刚刚意识到 使用以下命令添加事件处理程序 在 C 或者我猜 其他 net 语言 中可能会导致常见的内存泄漏 我过去多次使用过这样的事件处理程序 但从未意识到它们可能会导致或已经导致
  • 使用 xerces 链接 DLL 会给出未定义的符号

    我正在使用 cygwin 创建一个共享库 DLL 它使用 Xerces 当我从主应用程序调用 xercesc 函数时 一切都很好 但是当我尝试将一些代码放入库中时 我会得到 xerxesc 定义的所有静态内容的未定义符号 例如 std st
  • 出站电子邮件配置文件 API:获取电子邮件地址列表

    我正在开发一个 Java 控制台应用程序 该应用程序需要遍历 Tridion Outbound E mail 2011 中前端数据库中的所有电子邮件地址并更改该联系人的某个扩展字段 我已经浏览了订阅 API 文档以获取有关如何获取所有电子邮
  • Inno Setup 以字符串作为参数调用 DLL

    当我尝试使用 Inno Setup 脚本中的 DLL 时 出现异常 我认为问题出在dll代码中的这一行 StreamReader sreader new StreamReader newpath 如果我将路径硬编码为 D source tx
  • 如何在 Tridion 的 CME 中处理视图加载

    我有 Tridion 2011 Content Manager Explorer 的扩展 我想在其中仅针对特定视图执行特定的 JavaScript 片段 我使用以下 JavaScript 片段来执行此操作 var onDisplayStar
  • 使用 PIMPL 习惯用法删除 DLL 中的 std::vector 时出错

    我有以下代码 In DLL1 在 h文件中 class MyClass public MyClass private std string m name class declspec dllexport Foo private struct
  • ctypes 加载 dll 时没有错误消息,但什么也没发生

    我尝试在ctypes中使用windll LoadLibrary将dll文件导入python 尽管没有任何错误消息 但头文件中列出的函数似乎都没有成功加载 我想知道是dll文件有问题 还是我错误地使用了windll LoadLibrary方法
  • 虚拟乐器 iPhone 应用程序中的 VoiceOver 辅助功能?

    我收到盲人用户的评论 称我的一些声音和音乐相关应用程序只能在关闭 VoiceOver 的情况下使用 在 iOS 设备上启用 VoiceOver 辅助功能后 是否可以启用音乐键盘或鼓垫触摸区域 以便在点击键盘键或虚拟鼓组 等 时可以立即播放音
  • 每次 TDbGrid 的选定位置更改时都会触发什么事件?

    我的项目中有一个 TDbGrid 每次更改所选行时我都试图触发一个事件 行中的任何更改都已经更新了链接到同一数据源的所有数据感知控件 但还需要进行其他更改 我需要一个事件处理程序 我认为 OnColEnter 会起作用 根据帮助文件 它在以
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众

随机推荐