2014-06-20 11 views
7

Ho un file ospitato sul disco insieme al mio sito Web che voglio leggere. Non so come accedere al file quando utilizzo System.Environment.CurrentDirectory che punta a una posizione di guida D. È possibile che qualcuno mi dica come posso ottenere il mio file archiviato alla radice di dove è ospitato il mio sito.Come ottenere il percorso del file system locale in siti Web blu

Grazie

risposta

11

C'è una variabile d'ambiente chiamato a casa in un ambiente del tuo sito web che li otterrà modo parte lì.

È possibile accedervi tramite la sintassi del rasoio o in codice (C#). Ad esempio, supponiamo di avere un file chiamato data.txt che si trova nella radice del tuo sito con il documento predefinito e il resto dei tuoi file. Si potrebbe ottenere il percorso completo come questo.

@{ var dataFileName = Environment.GetEnvironmentVariable("HOME").ToString() + "\\site\\wwwroot\\data.txt"; } 

È possibile trovare questo da soli utilizzando la Gestione controllo sito/"Kudu". Ad esempio, se il tuo sito web è contoso.azurewebsites.net, passa semplicemente a contoso. scm .azurewebsites.net. Qui puoi imparare tutto sul file system e le variabili d'ambiente disponibili per il tuo sito web.

+1

Sto facendo lo stesso su Azure e ho ottenuto "D: \ home \ site \ wwwroot \ bin \ NewFolder \ FileName.json", ma non riesco ancora ad accedere ... PERCHE !!?!?!? So che il file è lì come posso vederlo su Kudu ... Cosa mi manca? –

3

Per testabilità, utilizzo il seguente codice.

string path = ""; 
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HOME"))) 
    path = Environment.GetEnvironmentVariable("HOME") + "\\site\\wwwroot\\bin"; 
else 
    path = "."; 
path += "\\Resources\\myfile.json"; 

Nel precedente esempio, ho aggiunto myfile.json file in cartelle Resources in un progetto con l'impostazione Content e Copy if newer proprietà.

1

Questo funziona per me sia in localhost e d'azzurro:

Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "file_at_root.txt"); 

System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath è il percorso locale completo principale del sito.

+0

FYI: l'esecuzione di questo in Azure mi ha fornito: AppDomain.CurrentDomain.BaseDirectory = 'D: \ Programmi (x86) \ SiteExtensions \ Functions \ 1.0.11090 \' Che non era vicino a "D: \ home \ site \ wwwroot \ " – granadaCoder

+0

@granadaCoder Grazie, ha funzionato per me, ma l'ho aggiornato con HostingEnvironment.ApplicationPhysicalPath, che dovrebbe darti" D: \ home \ site \ wwwroot \ "in Azure. –

Problemi correlati