2014-06-20 2 views
7

J'ai un fichier hébergé sur le disque avec mon site Web que je veux lire. Je ne sais pas comment accéder au fichier lorsque j'utilise System.Environment.CurrentDirectory il pointe vers un emplacement de lecteur D. Peut-on me dire comment puis-je obtenir mon fichier stocké à la racine de l'endroit où mon site est hébergé.Comment obtenir le chemin du système de fichiers local dans les sites Web Azur

Merci

Répondre

11

Il y a une variable d'environnement appelée HOME dans l'environnement de votre site qui va vous faire partie du chemin.

Vous pouvez y accéder en utilisant la syntaxe du rasoir ou en code (C#). Par exemple, supposons que vous ayez un fichier appelé data.txt qui se trouve à la racine de votre site avec le document par défaut et le reste de vos fichiers. Vous pourriez obtenir son chemin complet comme ceci.

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

Vous pouvez le découvrir par vous-même en utilisant la gestion de site/"Kudu". Par exemple, si votre site Web est contoso.azurewebsites.net, accédez simplement à contoso. scm .azurewebsites.net. Ici, vous pouvez tout apprendre sur le système de fichiers et les variables d'environnement disponibles sur votre site Web.

+1

Je fais de même sur Azure et j'ai "D: \ home \ site \ wwwroot \ bin \ NouveauFolder \ FileName.json", mais je ne peux toujours pas accéder ... POURQUOI !!?!?!? Je sais que le fichier est là comme je peux le voir sur Kudu ... Qu'est-ce qui me manque? –

3

Pour la testabilité, j'utilise le code ci-dessous.

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

Dans l'exemple ci-dessus, j'ai ajouté le fichier myfile.json-Resources dossier dans un projet avec paramètre de propriété Content et Copy if newer.

1

Cela fonctionne pour moi dans les deux localhost et d'azur:

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

System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath est le plein chemin d'accès local à la racine de votre site.

+0

FYI: Exécuter cela dans Azure m'a donné: AppDomain.CurrentDomain.BaseDirectory = 'D: \ Program Files (x86) \ SiteExtensions \ Functions \ 1.0.11090 \' Qui n'était pas proche de "D: \ home \ site \ wwwroot \ " – granadaCoder

+0

@granadaCoder Merci, cela a fonctionné pour moi, mais je l'ai mis à jour avec HostingEnvironment.ApplicationPhysicalPath, qui devrait vous donner" D: \ home \ site \ wwwroot \ "dans Azure. –

Questions connexes