2014-06-20 6 views
7

Ich habe eine Datei auf der Festplatte gehostet zusammen mit meiner Website, die ich lesen möchte. Nicht sicher, wie ich auf die Datei zugreifen, wenn ich System.Environment.CurrentDirectory darauf verweisen a D drive location. Kann mir jemand sagen, wie ich zu meiner Datei gelangen kann, die im Stammverzeichnis meiner Website gespeichert ist?So erhalten Sie lokalen Dateisystempfad in azurblauen Websites

Dank

Antwort

11

Es ist eine Umgebungsvariable HOME in der Umgebung Ihrer Website aufgerufen, die Sie Art und Weise wird es bekommen trennen.

Sie können darauf mit Rasierersyntax oder in Code (C#) zugreifen. Angenommen, Sie haben eine Datei namens data.txt, die sich im Stammverzeichnis Ihrer Site befindet, mit dem Standarddokument und dem Rest Ihrer Dateien. Du könntest den vollen Pfad so bekommen.

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

Sie können dies mit dem Site Control Management/"Kudu" selbst herausfinden. Zum Beispiel, wenn Ihre Website contoso.azurewebsites.net ist, dann navigieren Sie einfach zu Contoso. scm .azurewebsites.net. Hier erfahren Sie alles über die Dateisystem- und Umgebungsvariablen, die für Ihre Website verfügbar sind.

+1

Ich mache das gleiche auf Azure und ich habe "D: \ home \ site \ wwwroot \ bin \ NewFolder \ FileName.json", aber ich kann immer noch nicht zugreifen ... WARUM !!?!?!? Ich weiß, dass die Datei da ist, wie ich es auf Kudu sehen kann ... Was vermisse ich? –

3

Für die Testbarkeit verwende ich den folgenden Code.

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

In obigem Beispiel habe ich myfile.json Datei zu Resources Ordner in einem Projekt mit Content und Copy if newer Eigenschaftseinstellung.

1

Dies funktioniert für mich in beiden localhost und zu:

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

System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath ist der volle lokale Pfad zum root Ihrer Website.

+0

FYI: Das Ausführen in Azure gab mir: AppDomain.CurrentDomain.BaseDirectory = 'D: \ Programme (x86) \ SiteExtensions \ Functions \ 1.0.11090 \' Welches war nicht in der Nähe von "D: \ home \ site \ wwwroot \" " – granadaCoder

+0

@granadaCoder Danke, es hat für mich funktioniert, aber ich habe es mit HostingEnvironment.ApplicationPhysicalPath aktualisiert, was dir" D: \ home \ site \ wwwroot \ "in Azure geben sollte. –

Verwandte Themen