我还想根据以前的经验添加评论。以下场景:
- 会话和/或引擎和/或包存储在静态变量中
- 会话和/或引擎和/或包作为参数发送到静态方法
除了前面描述的问题外,还可能导致几个问题,包括发布期间的内存泄漏。
Publisher 将开始消耗内存,直到最终处于无响应模式(您不能停止,也不能重新启动或禁用)并且您需要重新启动服务器。
在进行大规模出版时,这些问题可能会变得更糟
所以建议任何使用会话、引擎、包的东西都应该转换为非静态的
例如,从以下用于初始化跨所有模板使用的实用程序的代码开始
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using Tridion;
using Tridion.ContentManager;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.ContentManagement.Fields;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Publishing;
namespace sample.sample1
{
public class Utilities
{
private static Engine _engine;
private static Package _package;
public void InitializeUtilities(Engine e, Package p)
{
_engine = e;
_package = p;
}
}
}
进入
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using Tridion;
using Tridion.ContentManager;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.ContentManagement.Fields;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Publishing;
namespace sample.sample1
{
public class Utilities
{
private Engine _engine;
private Package _package;
public void InitializeUtilities(Engine e, Package p)
{
_engine = e;
_package = p;
}
}
}
可以省去很多问题