我正在使用.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
。不知道为什么会出现这种奇怪的行为。
答案 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版本,并确保为所有发布服务器部署了正确的版本。