2012-03-28 16 views
9

我正在使用.dll Newtonsoft.Json in my C# TBB來處理組件並生成Json數據。我已經在GAC[Global Assembly Cache]中添加了這個DLL,並且它也可以工作。但有時它不工作,我得到了以下錯誤而發佈:Tridion:在發佈時無法加載.Net 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 Services,重啓後我們發佈它很好的頁面。但是這個問題不斷重複出現。有沒有辦法永久解決這個問題?

最近我可以重現問題,當我已經在發佈過程中再次發佈相同的頁面時。第二次發佈嘗試返回了上述錯誤,但第二次發佈嘗試失敗後第一次發佈嘗試完成,並返回Success。任何想法爲什麼這個怪異的行爲。

+2

這聽起來像它可能是一個線程問題,因爲預覽是單線程的,發佈/渲染是多線程的。你有多少渲染線程?你可以嘗試改變它並重新測試,看看問題是否仍然存在。這不會解決問題,但是。 Ay證明了原因。 – 2012-03-28 13:26:40

+1

你可能要考慮承諾到Tridion SE網站 - 很多這些問題將在那裏適當:http://area51.stackexchange.com/proposals/38335/tridion?referrer=eo63snjNlUWNn9xqeeO2NA2 – 2012-03-28 16:46:44

+0

嘿@Sunil。我只注意到這個問題仍然存在。下面的答案是否有助於您解決問題?如果是這樣,你可以通過點擊左邊的大複選標記來接受答案嗎? – 2012-07-09 18:47:30

回答

6

有時候您的平臺設置不正確。通過右鍵單擊項目並將框架設置爲4.0(或任何兼容的)來使用該DLL來檢查此問題。然後,關閉應用程序並再次運行它。您的平臺可能設置爲.NET Framework 4客戶端配置文件。

6

如果不是因爲重新啓動服務後效果更好,我以爲這是關於NewtonSoft.Json依賴的程序集。如果有這樣的組件,那麼它們也需要在GAC中註冊。請注意,發佈者進程不一定與Tridion內核(執行預覽)具有相同的應用程序文件夾或探測路徑。正如克里斯所說,也許這是一個線程問題,但有時候這種奇怪的東西在內存壓力下顯現出來。你可以監視你的發佈者進程的內存使用情況,看看是否有泄漏?

+2

這裏有類似的想法,唯一讓人想到的是如果環境可能與多個發佈商擴展。在這種情況下,CM/Publisher服務器中的每一個都需要GAC中的依賴程序集,並且之後會重新啓動其服務,否則會發生一些更糟的事情。 – 2012-03-28 21:03:49

3

融合日誌文件可以爲您提供更多關於失敗原因的詳細信息。您是否已經使用此工具?

Fuslogvw.exe (Assembly Binding Log Viewer)

以外,我建議得到最新JSON.NET版本.NET 4.0,並確保您部署的正確版本的所有發佈服務器。