Подтвердить что ты не робот

Как включить ведение журнала привязки к сборке?

Я получаю: "Не удалось загрузить файл или сборку" Bla "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом".

В части подробной информации говорится:

"WRN: Регистрация привязки сборки отключена. Чтобы включить ведение журнала сбоев сборки, установите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) на 1. Примечание. Существует некоторое ограничение производительности, связанное с протоколом сбоя привязки сборки. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog].

Итак, думая, что это может дать мне некоторое представление о том, почему я получаю ошибку выше (возможно, следующий YSOD будет содержать более ясную информацию о том, почему именно она не работает), я перешел в это место в реестре, но есть нет такого ключа, который я могу видеть. Он имеет:

\Fusion 
    (Default)   value not set
    \GACChangeNotification
    \NativeImagesIndex
    \PublisherPolicy

Что мне не хватает?

4b9b3361

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