TCMEventLog.NTEventLog.1中发生错误:ReportEvent失败

时间:2012-04-10 18:19:22

标签: tridion

我正在使用Tridion 2009 SP1。我正在尝试做的是在组件完成某个工作流程过程后启动一个事件。直觉上我尝试使用OnProcessInstanceFinishPost事件,但是,当用户(admin)显式单击“Finish Process”时,才会触发此事件;当所有活动完成并且“到达'停止'标志结束标记(如在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>

1 个答案:

答案 0 :(得分:2)

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

我不知道导致错误的原因是什么,但是在记录失败的情况下,通常是关于权限的。

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