GOOGLE ADS

Freitag, 22. April 2022

Freigeben einer Datenzugriffsebene zwischen ASP.NET Core und der .NET Core Windows Forms-App

Vielen Dank, dass Sie sich die Zeit genommen haben, meine Frage zu prüfen.

Ich habe eine Datenzugriffsebene zwischen meiner ASP.NET Core 3.1-Web-App und meiner.NET Core 3.1 Windows Forms-Back-End-App über ein Klassenbibliotheksmuster freigegeben.

Dies hat gut funktioniert, bis ich mich entschied, die einzufügende Datenzugriffsschicht mithilfe der Abhängigkeitsinjektion zu ändern.

Ich habe die Windows Forms-App erfolgreich für die Verwendung der Abhängigkeitsinjektion eingerichtet, diese Version von Windows Forms verwendet jedoch keine Instanz appsettings.jsonund verwendet daher keine IConfigurationInstanz, um die Verbindungszeichenfolge zu übergeben. Stattdessen greife ich Settings.settingswie folgt auf die Verbindungszeichenfolge in den Lösungsabhängigkeiten zu:

Properties.Settings.Default.MyConnectionString

Ich habe versucht, ein IConfigurationObjekt zum Lesen zu erstellen, Properties.Settings.Defaultaber ich kann anscheinend keine Methode finden, um einen zu füllenden Abschnitt zu instanziieren IConfigurationSection, ConnectionStringsdamit IConfigurationdie

GetConnectionString("MyConnectionString")

Anruf funktioniert.

Meine Frage lautet also: Kann ich die Windows Forms.NET Core-App für die Verwendung neu konfigurieren AppSettings.json? Oder gibt es eine Möglichkeit, eine Instanz zu erstellen IConfiguration, die mit gefüllt werden kann Properties.Settings.Default.MyConnectionString? Oder gibt es einen viel besseren Weg, mit dieser Situation umzugehen, an den ich nicht gedacht habe?

Jede Hilfe ist im Moment eine gute Hilfe.


Lösung des Problems

Am Ende stieß ich auf den Beitrag Unable to resolve service for type Microsoft Extensions Configuration IConfiguration, und kopierte dann einfach das appsettings.jsonOver von meiner ASP.NET-App und alles funktioniert.

Alles, was ich tun musste, war .SetBasePath(@"mypath"), einige Dinge hinzuzufügen und zu entfernen, die für mein Projekt nicht zutrafen. Hier ist der Code, der am Ende den Trick gemacht hat:

var builder = new ConfigurationBuilder()
.SetBasePath(@"mypath").AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
IConfiguration configuration = builder.Build();
services.AddSingleton<IConfiguration>(configuration);`

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...