9

我正在使用 .Net dllNewtonsoft.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。知道为什么会出现这种奇怪的行为。

4

3 回答 3

6

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

正如 Chris 所说,也许这是一个线程问题,但有时这种怪异现象会在内存压力下出现。您能否监控发布者进程的内存使用情况以查看是否存在泄漏?

于 2012-03-28T17:55:47.500 回答
6

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

于 2012-03-28T12:23:40.783 回答
3

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

Fuslogvw.exe(程序集绑定日志查看器)

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

于 2012-07-16T14:10:10.990 回答