Procedura per scrivere una funzione HTTP in .NET 10, provarla sul computer e pubblicarla su Azure Functions con il piano Flex Consumption, che si paga in base all'uso. Le risorse si creano, si provano e si eliminano dal portale di Azure; dal computer si scrive il programma e si carica il pacchetto.
Occorre: un account Azure con una sottoscrizione attiva, .NET 10, l'interfaccia a riga di comando di Azure e Azure Functions Core Tools 4.16 o successivo sul computer. Durata: circa venti minuti. Costo: pochi centesimi, se elimini le risorse alla fine.
Il portale delle schermate è in inglese: i nomi dei comandi sono riportati come appaiono a schermo.
La funzione
1. Crea il progetto
func init func-demo --worker-runtime dotnet-isolated --target-framework net10.0
cd func-demo
func new --template "HTTP trigger" --name Hello --authlevel function2. Scrivi il codice
Sostituisce Hello.cs:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
namespace func_demo;
public class Hello
{
[Function("Hello")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
{
string name = req.Query["name"].FirstOrDefault() ?? "world";
return new OkObjectResult($"Hello, {name}!");
}
}AuthorizationLevel.Function significa che su Azure la funzione risponde solo a chi presenta una chiave.
3. Provala sul computer
func start --port 7077Apri http://localhost:7077/api/Hello?name=Extra-Net:
Hello, Extra-Net!Sul computer la chiave non viene controllata.
Su Azure
4. Scegli il piano
Apri https://portal.azure.com/#create/Microsoft.FunctionApp. Lascia selezionato Flex Consumption e premi Select.

5. Crea la Function App
Nella scheda Basics compila:
- Resource Group: Create new,
rg-guide-func-01, OK - Function App name: un nome tuo, qui
fn-guide-extranet-01 - Region: West Europe
- Runtime stack: .NET
- Version: 10 (LTS), isolated worker model
- Instance size: 2048 MB

Premi Review + create. Le altre schede restano come sono: il portale propone da solo l'account di archiviazione e il piano.

Premi Create e aspetta Your deployment is complete.

6. Carica il programma
Dalla cartella del progetto:
dotnet publish -c Release -o publish
cd publish
zip -r ../func-demo.zip .
cd ..
az functionapp deployment source config-zip -n fn-guide-extranet-01 \
-g rg-guide-func-01 --src func-demo.zipIn PowerShell, al posto della riga con zip, usa tar -a -cf ../func-demo.zip .. Il pacchetto deve contenere la cartella nascosta .azurefunctions: nella prova Compress-Archive l'ha lasciata fuori e Azure ha rifiutato il pacchetto.
Nella prova su Windows, func azure functionapp publish di Core Tools 4.16.0 si è fermato con The underlying compression routine could not be loaded correctly: per questo la procedura carica il pacchetto con az. Il caricamento ha richiesto 79 secondi.
Nel portale apri la Function App: in Overview, scheda Functions, compare Hello. In Default domain c'è l'indirizzo dell'applicazione: il nome che hai scelto, seguito da una parte generata da Azure.

7. Prova dal portale
Premi Hello. Si apre la pagina Code + Test: un programma .NET già compilato non si modifica da qui.

Premi Test/Run e compila:
- HTTP method: GET
- Key: default (Function key)
- Query parameters: Name
name, ValueExtra-Net

Premi Run. Nella scheda Output:

8. Prova senza chiave
Copia l'indirizzo di Default domain e apri nel browser https://<indirizzo>/api/Hello?name=Extra-Net, senza nessuna chiave. Azure risponde 401: la funzione esiste, ma senza chiave non risponde. È il comportamento giusto.
9. Trova la chiave
Nella funzione apri Function Keys. Il valore resta nascosto finché non premi Show value. Si passa all'indirizzo aggiungendo &code=<chiave>. La chiave dà accesso alla funzione: non scriverla nel codice e non pubblicarla.

Eliminare le risorse
10. Elimina il gruppo
Apri il gruppo rg-guide-func-01. Contiene sei risorse, create tutte dal portale: piano, Function App, account di archiviazione, Application Insights e due elementi di avviso.

Premi Delete resource group, scrivi il nome del gruppo per confermare, premi Delete e, nella finestra che segue, di nuovo Delete.

Nomi dei comandi, schermate e risposte rilevati il 9 novembre 2026, regione West Europe, con .NET 10.0.401, Azure Functions Core Tools 4.16.0 e l'interfaccia a riga di comando di Azure 2.91.0.