Ich habe eine .NET 8.0 -Konsolenanwendung, die .NET Generic Host (Microsoft.Extensions.Hosting 8.0.0 Nuget -Paket) verwendet. Wenn ich meine Bewerbung mit Strg+C dispose () schließe, wird mein Dienst nicht aufgerufen. Ich habe zwei Problemumgehungen dafür gefunden (über Ihostapplicationlifetime und über Host.dispon ()). Warum iShost nicht alle registrierten ihostedService -Instanzen beim Herunterfahren des Hosts entsorgen?
Mein Beispielcode: < /p>
Ich habe eine .NET 8.0 -Konsolenanwendung, die .NET Generic Host (Microsoft.Extensions.Hosting 8.0.0 Nuget -Paket) verwendet. Wenn ich meine Bewerbung mit Strg+C dispose () schließe, wird mein Dienst nicht aufgerufen. Ich habe zwei Problemumgehungen dafür gefunden (über Ihostapplicationlifetime und über Host.dispon ()). Warum iShost nicht alle registrierten ihostedService -Instanzen beim Herunterfahren des Hosts entsorgen? Mein Beispielcode: < /p> [code]using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System;
namespace IHostCtrlC;
internal class Program { static void Main() { var hostBuilder = Host.CreateDefaultBuilder().ConfigureServices(services => { services.AddSingleton(); }); var host = hostBuilder.Build(); host.Start();
//workaround via IHostApplicationLifetime var hostApplicationLifetime = host.Services.GetRequiredService(); var service1 = host.Services.GetRequiredService(); hostApplicationLifetime.ApplicationStopping.Register(OnShutdown, service1); //end of workaround via IHostApplicationLifetime
internal class Service1 : IService1 { public string GetText() => "Text from Service1"; public void Dispose() => Console.WriteLine("Service1.Dispose()"); } [/code]
Ich muss eine Aktion (d. H. E., Log -Erfolgsabschaltung) ausführen, wenn alle registrierten Dienste in .NET Generic Host entsorgt werden. Ich hoffe using Microsoft.Extensions.DependencyInjection;...
In ASP.NET Core können Sie neue Middleware in der Anforderungsverarbeitungspipeline während der Methode für die Konfiguration der Startklasse, die Sie für Ihren Webhost Builder verwenden, unter...
InvalidOperationException: Im Typ wurden mehrere Konstruktoren gefunden, die alle angegebenen
Argumenttypen akzeptieren
'System.Collections.Generic.List`1 '.
Es sollte nur ein anwendbarer...