🚀 K čemu slouží integrace Console Applications v Kentico?
Nový design, upgrade systému a další podstatné změny jsou přirozenou součástí jakéhokoliv podniku. Abychom proces přenášení dat s tím spojený udělali co nejjednodušší, používáme právě Console Applications.
Tyto nástroje umí:
- Automatizovat komplexní procesy
- Spravovat velké objemy dat efektivně
- Poskytovat robustní mechanizmy v řešení errorů
Ve zkratce, Console Applications zjednodušují jakoukoliv práci a údržbu dlouhodobých projektů pro naše klienty. Šetří tak přímo náš čas a peníze klientovi.
🛠️ Rozsáhlá navigace v Kentico SDK
Oficiální dokumentace od Kentico obsahuje článek o plném využití Kentico SDK v rámci externích aplikací. Zahrnuje web i console applications. Aktuálně se vám ale může stát, že po následování všech vypsaných kroků narazíte na error. V tomto článku navážu na aktuální řešení a poskytnu dodatečné informace, které zajistí ještě hladší proces celé integrace.
1. krok: Vytvořte New Console Application
Začneme vytvořením nové console application. Jednoduše spuštěním následujícího příkazu:
dotnet new console -n KenticoConsoleApplication
2. krok: Nastavení Database Connection String
Nastavení Database Connection String je jednoduchý proces, jednoduše vytvořte nový soubor s názvem appsettings.json a zkopírujte do něj connection string vašeho webového projektu. Váš appsettings.json soubor by měl vypadat takto:
{
"ConnectionStrings": {
"CMSConnectionString": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DancingGoat14;Integrated Security=True;Persist Security Info=False;Connect Timeout=60;Encrypt=False;Current Language=English;"
}
}
3. krok: Instalace the Kentico Xperience NuGet Package
Jakmile jste nastavili connection string, dalším krokem je instalace, který poskytuje potřebné knihovny pro práci s aplikací Kentico v console application.Instalovat ho můžete spuštěním příkazu níže v Package Manager Console:
dotnet add package Kentico.Xperience.Core
Tím se do vašeho projektu přidají knihovny Xperience, které vám umožní programově pracovat s daty DXP.
4. krok: Inicializace Xperience Application
Po instalaci Kentico Xperience NuGet package je finálním krokem inicializace Xperience application v rámci console projektu. To zajistí, že jsou všechny potřebné komponenty správně nakonfigurované před tím, než začnete interagovat s daty CMS.Za tímto účelem přidejte do souboru
Program.cs
následující kód:
using CMS.DataEngine;
CMSApplication.Init();
Console.WriteLine("Xperience by Kentico successfully initialized!");
Podle dokumentace by odteď měly Console Applications v pořádku fungovat. Samotné spuštění Console Applications může ale skončit errorem:
CMS.DataEngine.ApplicationInitException: Cannot access the database specified by the 'CMSConnectionString' connection string. Please install the database externally and set a correct connection string.
Chcete-li rychle zkontrolovat aktuální connection string, použijte:
Console.WriteLine($"CMS connection string: {ConnectionHelper.ConnectionString}");
Bohužel se objevuje další výjimka:
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.
Abychom to vyřešili, musíme nejprve předinicializovat Xperience application:
CMSApplication.PreInit(initializeContainer: true);
Pokud CMSConnectionString zůstává prázdný, přestože je zadán v souboru appsettings.json, je to pravděpodobně způsobeno tím, že IConfiguration není správně nastaven. Chcete-li to vyřešit, přidejte balíček 'Microsoft.Extensions.Configuration.Json' Nuget package:
dotnet add Microsoft.Extensions.Configuration.Json
A ručně nakonfigurujte IConfiguration pomocí:
Service.Use<IConfiguration>(new ConfigurationManager().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"));
Tímto posledním krokem jsou Console Applications připraveny pro váš Kentico projekt. Doufám, že jsem vám pomohl ušetřit čas a úsilí.
Od 5. 9. 2024 byla dokumentace pro Console Applications integraci rozšířena a hotfix, který celý set-up zdokonalil byl vydán! Děkujeme týmu Kentico za poskytnutý hotfix. 😊 |