kaushik guru

kaushik guru

  • 2k
  • 252
  • 24.1k

make background service run in iis even if iis is idle

Sep 13 2023 12:35 PM

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()

        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


i have registered it also 

Answers (5)