如何在azure网站中获取本地文件系统路径

时间:2014-06-20 18:30:13

标签: azure

我在磁盘上托管了一个文件以及我想要阅读的网站。当我使用System.Environment.CurrentDirectory指向D驱动器位置时,我不确定如何访问该文件。有人请告诉我如何访问存储在我的网站所在位置的根目录的文件。

由于

5 个答案:

答案 0 :(得分:11)

在您的网站环境中有一个名为HOME的环境变量可以帮助您在那里工作。

您可以使用razor语法或代码(C#)访问它。例如,假设您有一个名为data.txt的文件,该文件位于站点的根目录下,其中包含默认文档和其余文件。你可以得到这样的完整路径。

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

您可以使用站点控制管理/" Kudu"自行找到它。例如,如果您的网站是contoso.azurewebsites.net,那么只需导航到contoso。 scm .azurewebsites.net。在这里,您可以了解有关您网站可用的文件系统和环境变量的所有信息。

答案 1 :(得分:4)

为了测试性,我使用下面的代码。

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

在上面的示例中,我将myfile.json文件添加到ResourcesContent属性设置的项目中的Copy if newer文件夹中。

答案 2 :(得分:1)

这适用于localhost和azure:

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

System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath是您网站根目录的完整本地路径。

答案 3 :(得分:0)

我当前正在使用AppDomain.CurrentDomain.BaseDirectory(。NET Core项目)。它在Azure中返回“ D:\ home \ site \ wwwroot \”,在本地返回应用程序根目录,因此唯一的区别是在Azure中添加“ bin \\”。我正在搜索整个目录树,以防万一,但是可以进行修剪。

类似于:

private static string GetDriverPath(ILogger logger, string fileName)
{
    var path = AppDomain.CurrentDomain.BaseDirectory;

    if (File.Exists(Path.Combine(path, fileName)))
    {
        return path;
    }

    string[] paths= Directory.GetFiles(path, fileName, SearchOption.AllDirectories);

    if (paths.Any())
    {
        return Path.GetDirectoryName(paths.First());
    }

    throw new FileNotFoundException($"{fileName} was not found in {path}.", fileName);
}

我是新回答的问题,虽然这是一个老问题,但我希望它可以帮助某人。

答案 4 :(得分:0)

您可以使用以下代码进行操作。

string fullFilePath = Environment.GetEnvironmentVariable("HOME") != null
    ? Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot\test.txt" //It will give the file directory path post azure deployment
    : Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory())) + @"\test.txt";//It will give the file directory path in dev environment.