Una volta effettuata la pubblicazione all’interno di IIS on premise è necessario impostare il valore della variabile ASPNETCORE_ENVIRONMENT con il nome dell’ambiente in cui ci troviamo (es. production). Dal valore di questa variabile dipendono le configurazioni dell’applicazione .net core, che sono definite all’interno del file appsettings_ENV.json (ENV=ambiente in cui ci troviamo).
Il valore di questa variabile può essere configurata all’interno di IIS :
- Aprire IIS Manager
- Posizionarsi sul sito internet che vogliamo configurare
- Entrare all’interno del configuration manager

- Nel menu di destra “sezione” selezionare system.webServer/aspNetCore e selezionare ApplicationHost.config
- A questo punto è possibile aggiungere la variabile utilizzando il pulsante Add sulla sinistra

- Dopo aver effettuato il salvataggio è necessario riavviare il website
A questo punto tutto funzionerò correttamente, ma il problema nasce al momento del deploy automatico della pipeline. Anche se siamo in presenza di un applicazione .net core, il deploy prevede la generazione di un file web.config. Questo file sovrascriverà le configurazioni esistenti, rimuovendo di fatto la configurazione fatta per la variabile ASPNETCORE_ENVIRONMENT, generando di fatto un errore 500.3.
Ovviamente la soluzione non può essere quella di aggiungere la configurazione manualmente all’interno del file web.config e neppure quella di effettuare una modifica post-generazione dello stesso file.
E’ necessario analizzare il tipo di operazione che viene eseguita all’interno della pipeline per la generazione del file web.config. Il processo di generazione è durante la build.
Aggiungendo al processo di build (all’interno del file yaml) il parametro EnvironmentName verrà aggiunta automaticamente la variabile all’interno del file web.config.
La sintassi completa è :
/p:EnvironmentName=Production