【问题标题】:An error occured in TCMEventLog.NTEventLog.1: ReportEvent failedTCMEventLog.NTEventLog.1 出现错误:ReportEvent 失败
【发布时间】:2012-04-10 18:19:22
【问题描述】:

我正在使用 Tridion 2009 SP1。我要做的是在组件完成某个工作流程后启动一个事件。直观地说,我尝试使用 OnProcessInstanceFinishPost 事件,但是,只有当用户(管理员)明确单击“完成过程”时才会触发此事件;当所有活动完成后流程正常完成并且“到达'停止'标志结束标记(如 Visio 图表中所示)时,不会触发此事件。

所以我改用了 OnActivityInstanceFinishPost 事件。问题是在 OnActivityInstanceFinishPost 事件中,我正在获取记录器并尝试记录一条简单的消息,例如“Hello World”,但事件查看器始终显示错误:“TCMEventLog.NTEventLog.1 中发生错误:ReportEvent 失败。”并且事件没有被执行。

注意,在 OnProcessInstanceFinishPost 事件中,完全相同的代码可以正常工作。

我检查了这是否是身份用户的权限问题,但该用户是 Tridion 中的管理员,所以这不可能。我检查了 SDLTridionworld 论坛,但没有运气,当然,我已将代码简化为一个日志语句,以确保它不在我的代码中。

代码如下:

public void OnActivityInstanceFinishPost(ActivityInstance ActivityInstance, string finishMessage, string nextActivity, string dynamicAssignee)
{
    TDSE tdse = new TDSEClass() as TDSE;
    tdse.Impersonate(_identity);
    tdse.Initialize();

    Logging logger = tdse.GetLogging() as Logging;

    logger.LogEvent("Entered event OnActivityInstanceFinishPost. nextActivity="+nextActivity, EnumSeverity.severityInfo, EnumEventCategory.EVENT_CATEGORY_EVENT_SYSTEM);
}

这是完整的错误:

Log Name:      Tridion Content Manager
Source:        Kernel
Date:          4/9/2012 10:14:07 PM
Event ID:      100
Task Category: Logging
Level:         Error
Keywords:      Classic
User:          SYSTEM
Computer:      xxxxxxxxxxxxxx
Description:
An error occured in TCMEventLog.NTEventLog.1:
ReportEvent failed.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Kernel" />
    <EventID Qualifiers="49152">100</EventID>
    <Level>2</Level>
    <Task>9</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-04-10T03:14:07.000Z" />
    <EventRecordID>546126</EventRecordID>
    <Channel>Tridion Content Manager</Channel>
    <Computer>xxxxxxxxxxxxxxxxxxxxxxxxx</Computer>
    <Security UserID="S-1-5-18" />
  </System>
  <EventData>
    <Data>An error occured in TCMEventLog.NTEventLog.1: ReportEvent failed.</Data>
  </EventData>
</Event>

【问题讨论】:

  • 我刚刚找到了答案。综上所述,如果遇到此错误,则表示 MMC Snap-In 中尚未设置事件触发器。我只是忽略了 OnActivityInstanceFinishPost 事件的管理单元中的配置。我最初只配置了要在管理单元中触发的 OnProcessInstanceFinishPost 事件。后来在整个开发过程中,我实现了新事件,但忘记更新管理单元中的事件触发器。
  • 如果您将此添加为答案,您可以获得更多积分。另外,您是否致力于 Tridion Stack Exchange 提案? area51.stackexchange.com/proposals/38335/tridion
  • 未能在管理单元中配置事件触发器不会导致日志中显示错误。它应该只是意味着该事件不会触发。

标签: tridion


【解决方案1】:

该错误表明 Tridion 未能写入日志消息。我假设您已经有一些证据表明这是由工作流活动完成触发的。

我不知道是什么导致了错误,但由于日志记录失败,通常与权限有关。

这取决于您的工作流程,哪个用户实际触发了 OnActivityInstanceFinishPost 事件。如果活动由用户手动完成,则该用户将是执行该事件的 Windows 身份(或者如果配置了 Tridion 模拟,则为模拟用户)。如果它是一个自动活动,那么它将由为工作流代理服务配置的身份执行。我建议检查每个帐户是否能够正确登录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多