🚀 Rationalisierte Migration von Inhalten
Umgestaltungen, System-Upgrades und andere bedeutende Veränderungen sind ein natürlicher Bestandteil des Lebenszyklus eines jeden Unternehmens. Um den damit einhergehenden Prozess der Inhaltsmigration zu rationalisieren, verwenden wir die Console Applications.
Diese leistungsstarken Tools:
- Automatisieren komplexe Prozesse
- Effiziente Bewältigung großer Datenmengen
- Bieten robuste Mechanismen zur Fehlerbehebung
Kurz gesagt, die Console Applications machen unsere Arbeit an jedem der fortlaufenden Projekte unserer Kunden viel einfacher und effektiver, was uns Zeit und unseren Kunden Geld spart.
🛠️ Umfassende Navigation durch das Kentico SDK
Die offizielle Dokumentation enthält einen Artikel über die Nutzung des Kentico SDK in externen Anwendungen. Er deckt sowohl Web- als auch Konsolenanwendungen ab. Im Moment kann es sein, dass Sie auf einen Fehler stoßen, nachdem Sie alle Schritte in der vorgestellten Dokumentation ausgeführt haben. In diesem Artikel werde ich auf die bereitgestellten Materialien eingehen und Ihnen eine klare Lösung anbieten, damit Ihr Integrationsprozess so reibungslos wie möglich verläuft.
Schritt 1: Erstellen einer neuen Konsolenanwendung
Beginnen wir mit der Erstellung einer neuen Konsolenanwendung. Sie können dies ganz einfach tun, indem Sie den folgenden Befehl ausführen:
dotnet new console -n KenticoConsoleApplication
Schritt 2: Festlegen der Datenbankverbindungszeichenfolge
Als nächstes müssen Sie den Datenbankverbindungsstring festlegen. Erstellen Sie einfach eine neue Datei mit dem Namen appsettings.json und fügen Sie den Verbindungsstring aus Ihrem Webprojekt in diese Datei ein. Ihre Datei appsettings.json sollte wie folgt aussehen:
{
"ConnectionStrings": {
"CMSConnectionString": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DancingGoat14;Integrated Security=True;Persist Security Info=False;Connect Timeout=60;Encrypt=False;Current Language=English;"
}
}
Schritt 3: Installieren Sie das Kentico Xperience NuGet-Paket
Nachdem Sie die Verbindungszeichenfolge eingerichtet haben, müssen Sie im nächsten Schritt das Kentico Xperience NuGet-Paket installieren. Dieses Paket enthält die erforderlichen Bibliotheken für die Arbeit mit Kentico in Ihrer Konsolenanwendung.Sie können es installieren, indem Sie den folgenden Befehl ausführen:
dotnet add package Kentico.Xperience.Core
Dadurch werden die Xperience-Bibliotheken zu Ihrem Projekt hinzugefügt, so dass Sie programmatisch mit Ihren DXP-Daten interagieren können.
Schritt 4: Initialisieren der Xperience-Anwendung
Nach der Installation des Kentico Xperience NuGet-Pakets besteht der letzte Schritt darin, die Xperience-Anwendung innerhalb Ihres Konsolenprojekts zu initialisieren. Dadurch wird sichergestellt, dass alle erforderlichen Komponenten ordnungsgemäß konfiguriert sind, bevor Sie mit den CMS-Daten interagieren.Fügen Sie dazu den folgenden Code in Ihre Program.cs-Datei ein:
using CMS.DataEngine;
CMSApplication.Init();
Console.WriteLine("Xperience by Kentico successfully initialized!");
Laut Dokumentation ist dies alles, was erforderlich ist. Der Versuch, die Konsolenanwendung auszuführen, kann jedoch zu einem Fehler führen:
CMS.DataEngine.ApplicationInitException: Cannot access the database specified by the 'CMSConnectionString' connection string. Please install the database externally and set a correct connection string.
Um schnell herauszufinden, was falsch sein könnte, können wir die aktuelle Verbindungszeichenfolge überprüfen, verwenden:
Console.WriteLine($"CMS connection string: {ConnectionHelper.ConnectionString}");
Leider gibt es eine weitere Ausnahme:
CMS.Core.ServiceResolutionException: Resolution of 'CMS.Core.IConnectionStringService' failed with the following error: IoC container cannot be used for service resolution because it was not initialized yet.
Um dies zu beheben, können wir die Xperience-Anwendung zunächst durch einen Aufruf vorinitialisieren:
CMSApplication.PreInit(initializeContainer: true);
Die Ausnahme ist verschwunden, aber die Eigenschaft ConnectionHelper.ConnectionString gibt eine leere Zeichenfolge zurück 🙁, obwohl sie in appsettings.json angegeben ist. Das liegt wahrscheinlich daran, dass die IConfiguration nicht korrekt eingerichtet wurde. Um dies zu beheben, fügen Sie das Nuget-Paket „Microsoft.Extensions.Configuration.Json“ hinzu
dotnet add Microsoft.Extensions.Configuration.Json
Und konfigurieren Sie IConfiguration manuell mit:
Service.Use<IConfiguration>(new ConfigurationManager().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"));
Mit diesem letzten Schritt sind die Konsolenanwendungen bereit für Ihr Kentico-Projekt. Ich hoffe, ich konnte Ihnen helfen, Zeit und Mühe zu sparen.
As of 5. 9. 2024 the documentation for Console Applications integration has been extended and the hotfix streamlining the setup has been released! Thank you Kentico for the provided hotfix 😊 |