Как включить ведение журнала привязки к сборке?
Я получаю: "Не удалось загрузить файл или сборку" Bla "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом".
В части подробной информации говорится:
"WRN: Регистрация привязки сборки отключена.
Чтобы включить ведение журнала сбоев сборки, установите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) на 1.
Примечание. Существует некоторое ограничение производительности, связанное с протоколом сбоя привязки сборки.
Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog].
Итак, думая, что это может дать мне некоторое представление о том, почему я получаю ошибку выше (возможно, следующий YSOD будет содержать более ясную информацию о том, почему именно она не работает), я перешел в это место в реестре, но есть нет такого ключа, который я могу видеть. Он имеет:
\Fusion
(Default) value not set
\GACChangeNotification
\NativeImagesIndex
\PublisherPolicy
Что мне не хватает?
Ответы
Ответ 1
Хорошим местом для начала расследования каких-либо неудачных привязок является использование утилиты "fuslogvw.exe". Это может дать вам необходимую информацию, связанную с сбоем привязки, так что вам не нужно возиться с любыми значениями реестра, чтобы включить ведение журнала привязки.
Страница MSDN Fuslogvw
Утилита должна находиться в папке Microsoft SDKs, которая будет выглядеть примерно так: в зависимости от вашей операционной системы:
"C:\Program Files (x86)\Microsoft SDK\Windows\v {версия SDK} A\Bin\FUSLOGVW.exe"
1) Запустите эту утилиту (у нее есть графический интерфейс) и установите для параметров "Логарифмировать сбои на диске".
2) Нажмите "Удалить все", чтобы удалить список всех предыдущих сбоев связи
3) Воспроизводите сбой связи в приложении
4) В утилите нажмите "Обновить". Затем вы увидите сообщение об ошибке привязки, зарегистрированное в списке.
5) Вы можете просмотреть информацию о сбое привязки, выбрав ее в списке и нажав "Просмотр журнала"
Первое, что я ищу, это путь, в котором приложение ищет сборку. Вы также должны убедиться, что номер версии рассматриваемой сборки - это то, что вы ожидаете.
Ответ 2
Просто создайте новый DWORD (32) под клавишей Fusion. Назовите DWORD в EnableLog и установите для него значение 1. Затем перезапустите IIS, обновите страницу, дающую ошибки, и журналы сборок сборки будут отображаться в сообщении об ошибке.
Ответ 3
-
Создайте новый пул приложений
-
Перейдите к дополнительным настройкам пула приложений
-
Установите для параметра "Включить 32-разрядное приложение" значение "Истина"
-
Направьте ваше веб-приложение на использование этого нового пула
![Screenshot (IIS-ApplicationPool)]()
Ответ 4
Вместо создания нового пула приложений вы можете перейти к своему
Существующий пул приложений → Щелкните правой кнопкой мыши параметр предварительного выбора- > Включить 32-разрядное приложение ----- Установите значение ИСТИНА
Ответ 5
В ответ на pierce.jason выше, мне повезло:
Просто создайте новый DWORD (32) под клавишей Fusion. Назовите DWORD на LogFailures и установите для него значение 1. Затем перезапустите IIS, обновите страницу, дающую ошибки, и в сообщении об ошибке появятся журналы привязки сборки.
Ответ 6
Если вы иногда запускаете разные версии своего приложения, убедитесь, что вы удаляете "Bla" из каталога bin приложения, если эта версия не нуждается.
Ответ 7
Когда у меня была такая же проблема, я исправил ее, удалив существующий key.snk
в этом проекте и добавив новый ключ.
Ответ 8
Для меня файлом Bla был файл dll System.Net.http, который отсутствовал в моей папке BIN. Я только добавил это, и это работало отлично. Не изменил ни один ключ реестра или что-то в этом роде.