您最初订阅的事件是任何可识别对象及其任何操作的处理阶段,基本上会在 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
LoadFlags
编辑:
请注意,事件系统在 SDL Tridion 核心内运行,因此您不会从任何地方看到控制台窗口弹出。如果要记录信息,可以包含以下 using 语句:
using Tridion.Logging;
添加对Tridion.Logging.dll
您可以在..\Tridion\bin\client
目录中找到的引用后。然后,您可以在代码中使用以下日志记录语句:
Logger.Write("message", "name", LoggingCategory.General, TraceEventType.Information);
您可以在 Tridion 事件日志中找到它(前提是您也设置了日志级别以显示信息消息)。
但这里最好的选择可能是调试您的事件系统,这样您就可以在触发事件时直接检查您的对象。在这里,您可以找到一篇关于如何设置事件系统调试的不错的博客文章。