Tridion: невозможно загрузить .Net dll при публикации - PullRequest
9 голосов
/ 28 марта 2012

Я использую .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. Любая идея, почему это странное поведение.

Ответы [ 3 ]

6 голосов
/ 28 марта 2012

Если бы не факт, что он работает лучше после перезапуска службы, я бы подумал, что речь идет о сборке, от которой зависит NewtonSoft.Json. Если есть какие-либо такие сборки, то их тоже нужно будет зарегистрировать в GAC. Обратите внимание, что процесс издателя не обязательно имеет ту же папку приложения или путь поиска, что и ядро ​​Tridion (которое выполняет предварительный просмотр).

Как говорит Крис, возможно, это проблема многопоточности, но иногда такая странность проявляется под давлением памяти. Можете ли вы отслеживать использование памяти вашим издательским процессом, чтобы определить, нет ли утечки?

6 голосов
/ 28 марта 2012

Иногда ваша платформа настроена неправильно.Проверьте это, щелкнув правой кнопкой мыши по проекту и установив фреймворк на 4.0 (или любой другой совместимый), чтобы использовать dllЗатем закройте приложение и попробуйте запустить его снова.Возможно, на вашей платформе установлен профиль клиента .NET Framework 4.

3 голосов
/ 16 июля 2012

Файлы журнала Fusion могут предоставить вам более подробную информацию о причинах сбоя.Вы уже использовали этот инструмент?

Fuslogvw.exe (Просмотр журнала привязки сборки)

Кроме этого, я рекомендую получить последние версии JSON.NET для .NET 4.0и убедитесь, что вы развернули правильные версии на всех серверах публикации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...