[ad_1]
Estoy implementando un servicio en segundo plano, el problema es que cuando lo ejecuto en local, funciona bien ya que la aplicación está activa y ejecutándose. Pero, en IIS, implementé código e inicié el servidor en IIS. El servicio en segundo plano no se ejecuta hasta que navego por el sitio y queda inactivo cuando el servidor está inactivo.
Necesito que el servicio en segundo plano se ejecute en el mismo momento en que reinicio o inicio el sitio.
Mi programa.cs:
C#
builder.Services.AddHostedService<FailedEmailManagmentService>();
Yo también lo tengo registrado.
Lo que he probado:
C#
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; } } }
Solución 1
[ad_2]
コメント