Applicazioni .NET (ASP.NET Core)
Un sito può essere un'applicazione ASP.NET Core (.NET 8 o .NET 10, le versioni LTS): API, siti MVC, Razor Pages, Blazor Server. Si imposta nella pagina del sito, scheda Node.js / Python / .NET, scegliendo .NET. Non serve SQL Server: le applicazioni usano MariaDB o PostgreSQL del server.
I runtime
In Server › .NET l'amministratore vede le versioni installate e con un clic installa il runtime ASP.NET Core (comprende il runtime .NET) o l'SDK. Arrivano dalle build ufficiali di Microsoft, con l'impronta SHA-512 controllata, e le versioni stanno una accanto all'altra. Il runtime si installa anche da solo la prima volta che un sito sceglie quella versione. L'SDK (circa 200 MB) serve solo per compilare dai sorgenti sul server.
Crearla
- Pubblica l'applicazione:
dotnet publish -c Release -o publishsul tuo computer o nella tua CI, e carica la cartella nella home del sito (SFTP), per esempio inapp/publish/. Oppure indica un repository Git con il progetto: se l'SDK è installato il pannello lo compila da solo. - Nella scheda scegli .NET, la versione per cui è compilata l'app e la cartella (per esempio
app). - Punto di ingresso: vuoto, il pannello usa la
.dllpubblicata che trova inpublish/o nella cartella (quella con il suo.runtimeconfig.json); oppure scrivi il percorso (publish/MiaApp.dll) o un comando completo. - Avvia l'applicazione. Con l'SDK installato e la cartella vuota il pannello scrive un piccolo esempio e lo compila, così il sito risponde subito.
Se l'app è compilata per un'altra versione di .NET il pannello lo dice prima di avviarla.
Porta, nginx e header
Il pannello assegna una porta su 127.0.0.1 e imposta ASPNETCORE_URLS: l'app non deve scegliere porta né indirizzo. nginx fa da reverse proxy, WebSocket compresi (SignalR, Blazor Server). Il pannello imposta anche ASPNETCORE_FORWARDEDHEADERS_ENABLED=true: ASP.NET Core legge X-Forwarded-For e X-Forwarded-Proto e l'app vede l'indirizzo del visitatore e https. Se nel codice usi app.UseForwardedHeaders(), configuralo con ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto.
ASPNETCORE_ENVIRONMENT è Production: per cambiarlo aggiungi la variabile nelle Variabili d'ambiente.
Database con Entity Framework Core
Crea il database nella sezione Database e metti la stringa di connessione tra le variabili d'ambiente (il doppio trattino basso diventa : nella configurazione di .NET):
- MariaDB (Pomelo.EntityFrameworkCore.MySql):
ConnectionStrings__Default=Server=localhost;Database=negozio;User=negozio_u;Password=… - PostgreSQL (Npgsql.EntityFrameworkCore.PostgreSQL):
ConnectionStrings__Default=Host=localhost;Database=negozio;Username=negozio_u;Password=…
Deploy da Git e gestione
Come per Node.js e Python: chiave di deploy del sito, ramo, Deploy scarica il nuovo commit, esegue dotnet publish in publish/ quando c'è un progetto e l'SDK, riavvia e controlla che risponda. Se la compilazione non riesce, la versione in esecuzione resta quella di prima.
Avvio, arresto, riavvio, log, memoria e CPU funzionano come per le altre applicazioni: il servizio gira come utente del sito, nei limiti del suo account (modulo Isolamento e limiti) e con la stessa protezione del sistema.
Da sapere
- Sposta account porta anche le applicazioni .NET (e Node.js e Python): sul server di arrivo vengono riavviate dopo la copia dei file, installando il runtime se manca.
- La migrazione da Plesk o cPanel copia i file ma non attiva da sola un'applicazione ASP.NET Core trovata nel sito: il resoconto la segnala, e la attivi da questa scheda.
- Il .NET Framework classico (ASP.NET 4.x, Web Forms) non funziona su Linux: serve .NET 8 o successivo.