gpt4 book ai didi

Tridion 事件系统超时

转载 作者:行者123 更新时间:2023-12-04 22:22:43 25 4
gpt4 key购买 nike

我目前正在运行 Tridion 2011 SP1。

我正在编写一些在发布页面时运行的代码。它遍历页面中的每个组件模板,获取组件并将各种字段写入 XML 文档。对于具有许多组件模板或具有许多字段的组件的页面,此过程可能需要一段时间才能运行。如果该过程需要超过 30 秒,我会收到错误消息

The operation performed by thread "EventSystem0" timed out.

Component: Tridion.ContentManager
Errorcode: 0
User: NT AUTHORITY\NETWORK SERVICE

紧接着另一个
Thread was being aborted.


Component: Tridion.ContentManager
Errorcode: 0
User: NT AUTHORITY\NETWORK SERVICE

StackTrace Information Details:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at Tridion.ContentManager.Extensibility.EventSubscription.DeliverEvent(IEnumerable`1 subjects, TcmEventArgs eventArgs, EventPhases phase)

我相信我有三个选择。

1. 增加超时时间

这似乎是一个懒惰的解决方案,只会隐藏问题。不能保证超时问题不会再次发生。我也不确定超时值的存储位置(我尝试更改 Tridion Content Manager.msc 管理单元中的一些值,但没有成功)。

2. 在实际的事件处理程序例程中做更少的事情,让一个单独的进程来完成所有的艰苦工作

这似乎也不是正确的解决方案。我真的很想把我所有的事件处理程序代码放在一个地方。我们为我们的实时 5.3 安装提供了一个这样的解决方案,这是一个维护的噩梦(它很旧而且写得很差)。

3. 让我的代码更有效率

我的组件有很多字段,如果它们是 ComponentLinks,我的代码必须深入研究每个字段。我猜是因为 Tridion 对象的属性是延迟加载的,所以我访问的每个属性都会调用一次 API/数据库。检索一个在访问多个属性时很快就会堆积起来的属性平均需要 0.2 秒。如果有一种方法可以在一次调用中检索所有属性,这将非常有用。

有任何想法吗?

最佳答案

您是否考虑过异步运行您的事件?您可以通过更改以下行来执行此操作:

EventSystem.Subscribe<IdentifiableObject,TcmEventArgs(....)


EventSystem.SubscribeAsync<IdentifiableObject,TcmEventArgs(....)

关于Tridion 事件系统超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com