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

时间:2012-03-28 11:53:40

标签: .net json.net tridion tridion2009 assembly-loading

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

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。不知道为什么会出现这种奇怪的行为。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

融合日志文件可以为您提供有关失败原因的更多详细信息。你已经使用过这个工具了吗?

Fuslogvw.exe (Assembly Binding Log Viewer)

除此之外,我建议为.NET 4.0获取最新的JSON.NET版本,并确保为所有发布服务器部署了正确的版本。