Фоновое задание Hangfire остается в очередиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Фоновое задание Hangfire остается в очереди

Сообщение Anonymous »


У меня есть приложение MVC, и я пытаюсь отправить электронное письмо с помощью Hangfire и Postal. Письмо должно быть отправлено после регистрации. Регистрация работает правильно, но задание, которое я запускаю, остается в очереди, и я не получаю никаких писем. Итак, в моем контроллере MVC у меня есть следующий код:

public async Task Register (модель RegisterViewModel) { //правильно регистрируем пользователя //Я отправляю письмо BackgroundJob.Enqueue(() => NotifyRegistration(user.Id, user.UserName, user.Email) ); ... } [Автоматическая повторная попытка (Попытки = 5)] общедоступная асинхронная задача NotifyRegistration (строка userId, строка имени пользователя, строка электронной почты) { //Я вычисляю callbackUrl varviewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails")); вар двигатели = новый ViewEngineCollection (); engine.Add(новый FileSystemRazorViewEngine(viewsPath)); вар emailService = новый EmailService(движки); var emailToSend = новый NewRegisteredUserEmail { Кому = электронная почта, Имя пользователя = имя пользователя, CallbackUrl = callbackUrl }; электронная почтаService.Send(emailToSend); } Я не могу отладить метод NotifyRegistration. Я не знаю, почему. Я использую Postal, поэтому EmailService — не моя реализация. Вот как я настроил службу smtp:

Если я запущу панель Hangfire, я увижу запросы


Изображение


Но больше ничего не произошло. Что мне не хватает, чтобы отправить электронное письмо?

Спасибо

ОБНОВЛЕНИЕ В файле start.cs я написал следующее:

var options = новые SqlServerStorageOptions { QueuePollInterval = TimeSpan.FromSeconds(1) }; GlobalConfiguration.Configuration .UseSqlServerStorage("DbConnectionString", параметры) .UseFilter(новый LogEmailFailureAttribute()); app.UseHangfireDashboard(); app.UseHangfireServer(); ОБНОВЛЕНИЕ 2 Я преобразовал свою регистрацию NotifyRegistration следующим образом:
[AutomaticRetry(Попытки = 5)] общедоступная асинхронная задача NotifyRegistration (строка userId, строка имени пользователя, строка электронной почты, EmailService emailService) { //Я вычисляю callbackUrl var emailToSend = новый NewRegisteredUserEmail { Кому = электронная почта, Имя пользователя = имя пользователя, CallbackUrl = callbackUrl }; электронная почтаService.Send(emailToSend); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»