2012-03-28 3 views
9

Я использую .Net dll Newtonsoft.Json in my C# TBB для обработки компонентов и генерации данных Json. Я уже добавил эту DLL в GAC[Global Assembly Cache], и она также работает. Но иногда это не работает, и я получаю следующее сообщение об ошибке при публикации: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 она отлично работает. Чтобы исправить эту проблему, мы перезагрузим Tridion Services, а после перезапуска мы опубликуем страницу, в которой она работает. Но эта проблема снова и снова повторяется. Есть ли способ решить эту проблему на постоянной основе?

Недавно я смог воспроизвести проблему, когда снова опубликовал ту же страницу, когда она уже была опубликована. Вторая попытка публикации вернула указанную выше ошибку, но первая попытка публикации завершилась после отказа второй попытки публикации, и она вернула Success. Любая идея, почему это странное поведение.

+2

Похоже, что это может быть проблема с потоками, поскольку предварительный просмотр является однопоточным, а публикация/рендеринг - многопоточным. Сколько потоков рендеринга у вас есть? Можете ли вы попробовать изменить его на один и повторить, чтобы увидеть, все еще проблема с ти. Это не решит проблему, но. Ай доказывает причину. –

+1

, вы можете рассмотреть возможность совершения сделки с сайтом Tridion SE. Многие из этих вопросов будут уместны: http://area51.stackexchange.com/proposals/38335/tridion?referrer=eo63snjNlUWNn9xqeeO2NA2 –

+0

Эй, @ Сунил. Я только заметил, что этот вопрос все еще открыт. Какой-либо из ниже приведенных ниже ответов поможет решить проблему? Если да, можете ли вы принять этот ответ, щелкнув большой флажок слева от него? –

ответ

6

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

6

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

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

+2

Имея схожие мысли здесь, единственное, что приходит в голову, - это то, что среда, возможно, масштабируется несколькими издателями. В этом случае каждому из серверов CM/Publisher потребуется соответствующая сборка в GAC и после этого службы будут перезагружены, иначе произойдет что-то странное. –

3

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

Fuslogvw.exe (Assembly Binding Log Viewer)

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

 Смежные вопросы

  • Нет связанных вопросов^_^