Tridion:发布时无法加载.Net dll

Sun*_*dar 9 .net json.net assembly-loading tridion tridion2009

我正在使用.Net dll Newtonsoft.Json in my C# TBB来处理组件并生成Json数据.我已经添加了这个dll GAC[Global Assembly Cache],它也可以运行.但有时它不起作用,我发布时出现以下错误:

JScriptException: Expression 'RenderComponentPresentation()' had error 'Could not load file or assembly 'Newtonsoft.Json, Version=4.0.5.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.'

但是当我在Tridion中预览页面时它运行正常.要解决此问题,我们重新启动Tridion Services,重新启动后,我们发布了一个很好的页面.但是这个问题一再出现.有没有办法永久解决这个问题?

最近,当我已经在发布过程中再次发布同一页面时,我可以重现问题.第二次发布尝试返回上述错误,但第二次发布尝试失败后第一次发布尝试完成并返回Success.任何想法为什么这种奇怪的行为.

Mil*_*lee 6

有时您的平台设置不正确.通过右键单击项目并将框架设置为4.0(或任何兼容的)来使用dll来检查这一点.然后,关闭应用程序并再次尝试运行它.您的平台可能已设置为.NET Framework 4客户端配置文件.


Dom*_*nin 6

如果不是因为它在重新启动服务后效果更好,我认为这是关于NewtonSoft.Json所依赖的程序集.如果有任何此类程序集,那么它们也需要在GAC中注册.请注意,发布者进程不一定与Tridion内核(执行预览)具有相同的应用程序文件夹或探测路径.

正如克里斯所说,也许这是一个线程问题,但有时候这种奇怪现象会在内存压力下出现.您是否可以监控发布商流程的内存使用情况,以查看是否存在泄漏?

  • 在这里有类似的想法,唯一想到的是如果环境可能与多个发布者一起扩展.在这种情况下,每个CM/Publisher服务器都需要GAC中的依赖程序集,并在之后重新启动服务,否则会发生一些奇怪的事情. (2认同)