Тайм-аут фоновых заданий Hangfire - PullRequest
0 голосов
/ 04 декабря 2018

Я использовал Hangfire для многих проектов и у меня не было проблем с ним.Я пытался использовать его в своем новом проекте веб-API (.net core 2.1), но получал исключение Timeout при попытке выполнить BackgroundJob.

Startup.cs (внутри метода ConfigureServices)

services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));

Startup.cs (внутри метода Configure)

app.UseHangfireServer();
app.UseHangfireDashboard();

Все таблицы зависания были созданы при запуске моего приложения(как это должно).Но когда я пытаюсь использовать BackgroundJob следующим образом:

BackgroundJob.Enqueue(() => emailService.Send(emailDto));

Выдается исключение:

Сообщение об исключении : не удалось создать фоновое задание.Подробности см. Во внутреннем исключении.

Внутреннее сообщение об исключении : истекло время ожидания.Время ожидания истекло до завершения операции, или сервер не отвечает.

Я проверил метод emailService.Send (), и он работает правильно.(Я выполнил его, не используя Hangfire для проверки).

Важное обновление: Я обнаружил, что это проблема, связанная с выполнением BackgroundJob внутри TransactionScope.Когда я переместил эту логику за пределы транзакции, все прекрасно работало.Теперь мне интересно, есть ли способ заставить его работать внутри конкретной области транзакций?

...