Ich experimentiere mit FluentScheduler für einige Hintergrundaufgaben in ASP.net Core API.FluentScheduler Abhängigkeitsinjektion in Konstruktor
Der Job sollte Push-Benachrichtigungen jeden Tag in einem bestimmten Zeitintervall basierend auf wenigen Kriterien senden. Ich hatte das Dokument durchgesehen und eine Testfunktion implementiert, um einige Ausgaben im Konsolenfenster auszugeben. Es funktionierte wie erwartet mit dem vorhergesagten Zeitintervall.
Aber der eigentliche Job, den ich damit machen werde, beinhaltet den Datenbankkontext, der die notwendigen Informationen liefert, um die Kriterien zum Senden der Benachrichtigungen zu erfüllen.
Mein Problem ist, vermag ich nicht Konstruktor in MyJob
Klasse mit dem Parameter zu verwenden, die
PS fehlt Methode Ausnahme wirft: Gemäß diesem Artikel von Scott Hanselman, scheint FluentScheduler ziemlich berühmt zu sein, aber ich konnte es nicht Holen Sie sich Hilfe von Online-Communities. Aber offensichtlich ist es ziemlich einfach zu verstehen.
public class MyJob : IJob
{
private ApplicationDbContext _context;
public MyJob(ApplicationDbContext context)
{
_context = context;
}
public void Execute()
{
Console.WriteLine("Executed");
SendNotificationAsync();
}
private async Task SendNotificationAsync()
{
var overdues = _context.Borrow.Join(
_context.ApplicationUser,
b => b.ApplicationUserId,
a => a.Id,
(a, b) => new { a, b })
.Where(z => (z.a.ReturnedDate == null) && (z.a.BorrowApproval == 1))
.Where(z => z.a.ReturnDate.Date == new DateTime().Date.AddDays(1).Date)
.Select(z => new { z.a.ApplicationUserId, z.a.Book.ShortTitle, z.a.BorrowedDate, z.b.Token })
.ToList();
Console.WriteLine("Acknowledged");
foreach (var r in overdues)
{
string message = "You are running late! The book '" + r.ShortTitle + "' borrowed on '" + r.BorrowedDate + "' due tomorrow.";
Console.WriteLine(message);
await new PushNotificationService().sendAsync(r.Token, "Due Tomorrow!", message);
}
}
}
neuer ApplicationDbContext() Soll das Objekt nicht bereits von ConfigureServices instanziiert werden? – Kirk
Es ist nur ein Platzhalter für, aber Sie erhalten 'ApplicationDbContext' –
neue MyJob (neue ApplicationDbContext()) akzeptiert nicht. selbe Fehler wie kein Mssing Methodenfehler – Kirk