Ошибка Hangfire при загрузке сборки

Контекст

У меня есть два приложения, одно из которых является моим основным корпоративным приложением, а в другом размещено приложение Hangfire (сервер, клиент и панель управления). Мое основное приложение также использует Hangfire для некоторых длительных задач и выполняет их асинхронно. Оба используют одну и ту же БД для хранения HF. А ВЧ сервер всего один.

Проблема

Периодически я получаю следующие ошибки:

«Невозможно изменить состояние на« Обработка »: целевой метод не найден». ИЛИ

«Невозможно изменить состояние на« Поставлено в очередь »: целевой метод не найден».

со следующими деталями -

System.IO.FileNotFoundException

Не удалось загрузить файл или сборку MyApp.Hangfire, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null или одну из его зависимостей. Система не может найти указанный файл.

где MyApp.Hangfire - мое приложение для зависания, выполняющее задания. И я уверен, что он есть, и даже некоторые успешные работы подтверждают это.

Дополнительную информацию см. на прилагаемом снимке экрана.

введите описание изображения здесь

Наблюдение

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


person Yogi    schedule 05.02.2016    source источник
comment
Какую версию Hangfire вы используете?   -  person tom redfern    schedule 05.02.2016
comment
@TomRedfern: Я использую последнюю версию HF, то есть 1.5.3   -  person Yogi    schedule 05.02.2016
comment
Если вы возобновляете работу, она всегда терпит неудачу?   -  person tom redfern    schedule 05.02.2016
comment
@TomRedfern: Не всегда, иногда это проходило, а иногда даже терпело неудачу. Я также перепроверил, и есть только ВЧ сервер, никакие другие приложения не используют ту же ВЧ БД. Нет даже сброса IIS. :(   -  person Yogi    schedule 05.02.2016
comment
@Yogi есть новости по этой проблеме? Я пытаюсь использовать Hangfire, и у меня такая же проблема. Я поднял вопрос об этом github.com/HangfireIO/Hangfire/issues/558   -  person reggieboyYEAH    schedule 21.04.2016
comment
@reggieboyYEAH - В моем случае база данных HF была повреждена, поэтому я просто создал новую пустую БД для HF с новым именем, и она заработала правильно.   -  person Yogi    schedule 21.04.2016
comment
Получил тот же опыт, что и @Yogi, новая БД сделала свое дело. В моем случае проблема иногда решалась после перезапуска пула приложений (который воссоздает фоновых рабочих). После новой утилизации проблема снова вернулась.   -  person Frank Bakker    schedule 15.06.2016
comment
@FrankBakker - Я больше не сталкивался с той же проблемой, если проблема снова возникает в вашем случае, убедитесь, что нет другого экземпляра приложения, обращающегося к HF db   -  person Yogi    schedule 15.06.2016


Ответы (1)


Несколько дней назад я наткнулся на ту же проблему и решил, что стоит добавить ее сюда.
Решение: добавил ссылку на MyApp.Hangfire в веб-приложение панели инструментов.

Контекст был очень похож или идентичен вашему:
-Сервер Hangfire работал как служба Windows;
-Панель мониторинга Hangfire работала поверх приложения ASP.NET MVC 5;
-задания на самом деле были работает, но на приборной панели постоянно отображается исключение FileNotFoundException;

Об этой же проблеме было сообщено и она решена таким же образом @reggieboyYEAH.
Подробности здесь: https://github.com/HangfireIO/Hangfire/issues/558

person rozerocool    schedule 04.06.2017
comment
Проблема, которую вы описали, не совпадает с проблемой OP. Но это просто связано с тем, что на панели инструментов требуется ссылка для правильного отображения сведений о вакансии. Работы на самом деле выполняются нормально. В случае OP (и в моем случае) и на панели управления, и на сервере заданий уже есть необходимые ссылки, но задания периодически выходят из строя и повторяются. Работа иногда бывает успешной, а иногда - нет. - person dannie.f; 20.07.2017
comment
@ dannie.f: извините, я не смог помочь. Вы узнали, что это было? - person rozerocool; 09.08.2017
comment
@razercool Я просмотрел страницу Hangfire на github и обнаружил несколько проблем, связанных с описанной проблемой. См. # 908 и # 910. Я добавлю ответ с обходным решением, если это поможет другим людям - person dannie.f; 09.08.2017
comment
@razercool ОП указал, что его проблема связана с повреждением базы данных. Наблюдение за периодическими сбоями с исключением «Файл не найден», описанным в разделе «Проблемы с github», на самом деле коренится в ограничении зависания. Я собирался добавить ответ, но он не решал бы конкретную проблему OP. Но в случае, если это полезно для других людей, при использовании нескольких серверов с одной базой данных ошибку можно исправить, убедившись, что все серверы ссылаются на все классы заданий, даже те, которые он не может выполнить. т.е. Сервер A также должен ссылаться на задания для сервера B, и наоборот. - person dannie.f; 09.08.2017
comment
@ dannie.f: Спасибо! Все имеет смысл. - person rozerocool; 11.08.2017