Le Microsoft Azure Web App, così come le API e Mobile App, sono un servizio che ci permette di ospitare il nostro sito internet all'interno di un hosting IIS completamente gestito. Sia che utilizziamo Web Deploy o FTP, lo spazio che ci viene messo a disposizione è parzialmente raggiungibile da IIS attraverso la cartella wwwroot. Le altre cartelle sono riservate a file di log e ai web job, ma ci è consentito anche leggere e scrivere in tutto lo spazio a noi assegnato, per esempio per depositare nostri file (fino ad 1GB per i piani gratuiti).
Per farlo dobbiamo prima di tutto conoscere la struttura delle cartelle, visibile qui https://github.com/projectkudu/kudu/wiki/File-structure-on-azure. Poiché le API di IO necessitano sempre di un percorso assoluto (per evitare di cercare in system32) è opportuno risolvere sempre in modo corretto il percorso. A questo scopo vengono in aiuto le variabili d'ambiente, visibili a questo indirizzo https://github.com/projectkudu/kudu/wiki/Azure-runtime-environment. La più importante è sicuramente la variabile %HOME% che ci indica il percorso completo al livello radice.
In questo script proponiamo due facili funzioni che ci permettono di risolvere il percorso. Esse sono Environment.GetEnvironmentVariable e Environment.ExpandEnvironmentVariables rispettivamente per risolvere una variabile o convertire un percorso risolvendo le variabili che contiene.
var p = Path.Combine(Environment.GetEnvironmentVariable("HOME"), "miaCartella"); var p2 = Environment.ExpandEnvironmentVariables(@"%HOME%\miaCartella"); // p e p2 sono d:\home\miaCartella
In questo modo i percorsi che utilizziamo sono sicuri e al riparo da problemi in caso di cambiamenti da parte di Microsoft. Ricordiamo infine che il file system di cui la Web App dispone, è condiviso tra le molteplici istanze che possiamo avere ed è perciò importante prestare attenzione ad eventuali conflitti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la libreria Benchmark.NET per misurare le performance
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Elencare le container images installate in un cluster di Kubernetes
Eseguire operazioni con timeout in React
Sottoscrizione agli eventi sul contenitore in JavaScript
Ricevere avvisi su metriche dei server Azure Arc
Usare lo spread operator con i collection initializer in C#
Creare gruppi di client per Event Grid MQTT
Utilizzare Model as a Service su Microsoft Azure
Come migrare da una form non tipizzata a una form tipizzata in Angular
Eseguire operazioni sui blob con Azure Storage Actions
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati