相关疑难解决方法(0)

Tridion事件系统超时

我目前正在运行Tridion 2011 SP1.

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

The operation performed by thread "EventSystem0" timed out.

Component: Tridion.ContentManager
Errorcode: 0
User: NT AUTHORITY\NETWORK SERVICE
Run Code Online (Sandbox Code Playgroud)

接着是另一个

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)
Run Code Online (Sandbox Code Playgroud)

我相信我有三个选择.

1.增加超时

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

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

这似乎也不是正确的解决方案.我真的想将所有事件处理程序代码保存在一个地方.对于我们的5.3安装,我们有一个这样的解决方案,这是一个维护的噩梦(这是一个非常古老和写得不好).

3.让我的代码更有效率

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

有任何想法吗?

tridion

4
推荐指数
1
解决办法
762
查看次数

标签 统计

tridion ×1