Prerequisites You need to download and install the trial version of TX Text Control .NET Server to host the Document Editor backend and TX Spell .NET for Windows Forms for spell checking.: TX Text Control .NET Server Setup download and installation required. TX Spell .NET for Windows Forms Setup download and installation required. Note: TX Spell .NET for Windows Forms is used in this tutorial to enable spell checking in the TX Text Control Document Editor. The required TX Spell .NET NuGet package for ASP.NET Core web applications is included in this version. Introduction TX Text Control is a powerful word processing component for ASP.NET Core applications that allows developers to integrate rich text editing capabilities into their web applications. With support for various document formats, including DOCX, RTF, and PDF, TX Text Control provides a comprehensive solution for creating, editing, and managing documents directly within a web browser. This tutorial shows how to setup an ASP.NET Core web application that hosts TX Text Control in a Linux container including spell checking capabilities using TX Spell .NET. Creating the Application Make sure that you have installed the latest version of Visual Studio 2026, including the .NET 10 SDK. In Visual Studio 2026, create a new project by choosing Create a new project. Select ASP.NET Core Web App (Model-View-Controller) as the project template and confirm with Next. Enter a project name and choose a location to save the project. Confirm with Next. Choose .NET 10.0 (Long Term Support) as the Framework. Enable the Enable container support checkbox and choose Linux as the Container OS. Choose Dockerfile for the Container build type option and confirm with Create. Adding the Web Server Backend Create a new class by right-clicking the project in the Solution Explorer and choose Add -> Class.... Name the class TXWebServerProcess.cs and confirm with Add. Replace the complete content with the following code: using System.Diagnostics; using System.Reflection; public class TXWebServerProcess : IHostedService { private readonly ILogger<TXWebServerProcess> _logger; public TXWebServerProcess(ILogger<TXWebServerProcess> logger) => _logger = logger; public Task StartAsync(CancellationToken cancellationToken) { try { string? path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string dllPath = Path.Combine(path ?? "", "TXTextControl.Web.Server.Core.dll"); if (string.IsNullOrEmpty(path) || !File.Exists(dllPath)) _logger.LogWarning("TX Web Server process could not be started."); else { Process.Start(new ProcessStartInfo("dotnet", $"\"{dllPath}\" &") { UseShellExecute = true, WorkingDirectory = path }); _logger.LogInformation("TX Web Server process started."); } } catch (Exception ex) { _logger.LogError(ex, "Error starting TX Web Server."); } return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { _logger.LogInformation("Stopping TX Web Server process..."); return Task.CompletedTask; } } Right-click the project in Solution Explorer, select Add → Existing Item…, and then browse to the TX Text Control .NET Server installation directory. C:\Program Files\Text Control GmbH\TX Text Control 34.0.NET Server for ASP.NET\Assembly\net8.0 Set the file filter to All Files (*.*) and select the following files: TXTextControl.Web.Server.Core.deps.json TXTextControl.Web.Server.Core.dll TXTextControl.Web.Server.Core.Process.deps.json TXTextControl.Web.Server.Core.Process.dll TXTextControl.Web.Server.Core.Process.runtimeconfig.json TXTextControl.Web.Server.Core.runtimeconfig.json TXTextControl.Web.Server.Core.config.json Confirm with Add. Select the added files in the Solution Explorer and set the Copy to Output Directory property to Copy always. Adding the NuGet Packages In Solution Explorer, select your project and choose Manage NuGet Packages… from the Project menu. Then set Text Control Offline Packages as the package source. Install the following packages: TXTextControl.Web TXTextControl.TextControl.Core.SDK TXTextControl.TXSpell.Core.SDK By adding the NuGet packages, all necessary dependencies and folders for dictionaries for TX Text Control and TX Spell .NET are automatically included in the project. Configure the Application Open the Program.cs file located in the project's root folder. After builder.Services.AddControllersWithViews();, add the following code: builder.Services.AddHostedService<TXWebServerProcess>(); At the very top of the file, insert the following code: using TXTextControl.Web; Add the following code before the entry app.UseRouting();: // enable Web Sockets app.UseWebSockets(); // attach the Text Control WebSocketHandler middleware app.UseTXWebSocketMiddleware(); The overall Program.cs file should look like this: using TXTextControl.Web; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddHostedService<TXWebServerProcess>(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); // enable Web Sockets app.UseWebSockets(); // attach the Text Control WebSocketHandler middleware app.UseTXWebSocketMiddleware(); app.UseRouting(); app.UseAuthorization(); app.MapStaticAssets(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}") .WithStaticAssets(); app.Run(); Adding the Control to the View Find the Index.cshtml file in the Views -> Home folder. Replace the complete content with the following code to add the document editor to the view: @using TXTextControl.Web.MVC @Html.TXTextControl().TextControl().Render() <script> var sDocument = "<html><body><p>Welcome to <strong>Text Control</strong></p></body></html>"; TXTextControl.addEventListener("textControlLoaded", function() { TXTextControl.loadDocument(TXTextControl.StreamType.HTMLFormat, btoa(sDocument), function() { TXTextControl.selectAll(); TXTextControl.selection.setCulture("en-US"); TXTextControl.selection.setLength(0); TXTextControl.isSpellCheckingEnabled = true; }); }); </script> Starting the Application We will use the Dockerfile as provided and rely on the default Visual Studio template, which targets a Linux container based on the official Docker Hub image. Start the application by pressing F5 or by choosing Debug -> Start Debugging from the main menu.