Deploying Blazor Applications to Plesk Windows Hosting
Updated for .NET 8+: This guide covers all Blazor hosting models including the new Blazor Web App unified model.
Blazor Hosting Models
Before deploying, understand which Blazor model you are using:
| Model | Runs On | Best For |
|---|---|---|
| Blazor Server | Server (SignalR) | Internal apps, sensitive data |
| Blazor WebAssembly | Browser | Public apps, offline capability |
| Blazor Web App (.NET 8+) | Both | Flexible per-component choice |
Creating a Blazor Project (.NET 8+)
- Open Visual Studio 2022 (17.8 or later)
- Click Create a new project
- Select Blazor Web App (for .NET 8+) or Blazor WebAssembly Standalone App
- Configure project name and location
- Select .NET 8.0 or .NET 9.0 or .NET 10.0
- Choose your interactivity options:
- Server - Interactive Server rendering
- WebAssembly - Interactive WebAssembly rendering
- Auto - Server first, then WebAssembly
- None - Static server rendering only
- Click Create
Publishing to Plesk
Method 1: Web Deploy (Recommended)
- In Plesk, go to Websites & Domains → your domain
- Click Web Deploy Publishing Settings
- Download the .publishsettings file
- In Visual Studio, right-click your project → Publish
- Click Import Profile and select the downloaded file
- Enter your Plesk password when prompted
- Click Publish
Method 2: FTP Upload
- Publish locally:
dotnet publish -c Release -o ./publish - Connect via FTP to your domain
- Upload contents of publish folder to httpdocs
Configure Plesk for Blazor
- Go to Hosting Settings
- Set .NET Core Version to 8.0.x (or your target version)
- Set Application Startup File to your main DLL (e.g., MyBlazorApp.dll)
- Click OK
Blazor WebAssembly: Additional Configuration
Add MIME types to web.config for WebAssembly files:
<staticContent>
<remove fileExtension=".wasm" />
<mimeMap fileExtension=".wasm" mimeType="application/wasm" />
<remove fileExtension=".br" />
<mimeMap fileExtension=".br" mimeType="application/brotli" />
</staticContent>
.NET 8+ Render Modes
In .NET 8+, specify render modes per component:
@* Static server rendering *@
@rendermode Static
@* Interactive server (SignalR) *@
@rendermode InteractiveServer
@* Interactive WebAssembly *@
@rendermode InteractiveWebAssembly
@* Auto (Server first, then WASM) *@
@rendermode InteractiveAuto
Troubleshooting
- App not loading: Check stdout logs for startup errors
- SignalR disconnects: See our SignalR troubleshooting article
- Static assets missing: Verify MIME types and file permissions
- WASM integrity errors: Use binary mode for FTP transfers
For more details, see our specialized Blazor articles in the Blazor Development category.