WYSIWYG editing Image gallery upload Content templates
Production deployment

Deployment Guide

Deploy RichTextBox to IIS, Azure App Service, Linux with nginx, or Docker containers.

Before You Deploy

Pre-Deployment Checklist

RichTextBox.lic is included in the publish output (content root)

wwwroot/uploads directory exists and is writable by the app pool identity

app.UseStaticFiles() is called before app.MapRichTextBoxUploads()

Maximum request body size is configured for large file uploads

Option 1

Deploy to IIS

Publish the application and configure IIS with the ASP.NET Core Hosting Bundle. Set maxAllowedContentLength in web.config for large uploads.

dotnet publish -c Release -o ./publish

Add to web.config for uploads larger than 30 MB:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="52428800" />
    </requestFiltering>
  </security>
</system.webServer>

Option 2

Deploy to Azure App Service

Deploy using Visual Studio Publish, Azure CLI, or GitHub Actions. Ensure the license file is included in the publish output.

az webapp deploy --resource-group MyGroup \
                 --name my-richtextbox-app \
                 --src-path ./publish.zip

For persistent upload storage, consider mounting Azure Blob Storage or using a custom storage provider instead of the default local file system.

Option 3

Deploy to Linux with nginx

Run Kestrel behind an nginx reverse proxy. Configure client_max_body_size for large uploads.

server {
    listen 80;
    server_name example.com;
    client_max_body_size 50M;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Configuration

Kestrel Max Request Body Size

Configure Kestrel to accept large upload requests in Program.cs:

builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 50 * 1024 * 1024; // 50 MB
});