i am implementing a background service , the problem is when i run it in local it is working fine since the app is hit and running . but in iis i deployed code and started the server in iis. the background service is not running until i browse the site and becoming idle when the server is idle
using DocumentFormat.OpenXml.InkML; using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; using handbook.Controllers.HR; using handbook.Data; using handbook.Models.Mail; using handbook.Repositories.Implementation; using handbook.Repositories.Interface; using handbook.ViewModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System.Configuration; using System.Globalization; using System.Linq; namespace handbook.BackgroundmailService { public class EmailReminderSenderService : IHostedService, IDisposable { public static IConfiguration Configuration { get; set; } private Timer _timer; private readonly IOauthMailService _emailSender; private readonly ILogger<EmailReminderSenderService> _logger; public EmailReminderSenderService(IOauthMailService emailSender, ILogger<EmailReminderSenderService> logger, IServiceProvider serviceProvider, IConfiguration configuration) { _emailSender = emailSender; _logger = logger; Services = serviceProvider; Configuration = configuration; } public IServiceProvider Services { get; } private static TimeSpan getJobRunDelay() { // Change the delay to run every 10 minutes return TimeSpan.FromMinutes(1); } public void Dispose() { _timer?.Dispose(); } public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Background service is started"); _timer = new Timer(SendEmails, null, getJobRunDelay(), getJobRunDelay()); return Task.CompletedTask; } public async void SendEmails(object state) { my task } public Task StopAsync(CancellationToken cancellationToken) { _logger.LogInformation("Background service is stopping"); _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } } }
My program. cs
builder.Services.AddHostedService<FailedEmailManagmentService>();
i have registered it also