繁体   English   中英

如何在Microsoft Azure虚拟服务器上创建和保存临时文件

[英]How to create and save a temporary file on Microsoft Azure virtual server

我正在为网站使用免费的 MS Azure虚拟Web服务器。

在我的开发机上,我可以成功创建一个CSV文件,将其保存到相对的临时目录,然后将其下载到浏览器客户端。

但是,当我从Azure站点运行它时,出现以下错误:

System.IO.DirectoryNotFoundException:找不到路径'D:\\ home \\ site \\ wwwroot \\ temp \\ somefile.csv'的一部分。

免费版的Azure网站是否阻止我们将文件保存到磁盘? 如果没有,我们可以在哪里创建/保存我们即时生成的文件?

代码示例

private FilePathResult SaveVolunteersToCsvFile(List<Volunteer> volunteers)
{
    string virtualPathToDirectory = "~/temp";
    string physicalPathToDirectory = Server.MapPath(virtualPathToDirectory);
    string fileName = "Volunteers.csv";
    string pathToFile = Path.Combine(physicalPathToDirectory, fileName);
    StringBuilder sb = new StringBuilder();

    // Column Headers
    sb.AppendLine("First Name,Last Name,Phone,Email,Approved,Has Background Check");

    // CSV Rows
    foreach (var volunteer in volunteers)
    {
        sb.AppendLine(string.Format("{0},{1},{2},{3},{4},{5},{6}",
            volunteer.FirstName, volunteer.LastName, volunteer.MobilePhone.FormatPhoneNumber(), volunteer.EmailAddress, volunteer.IsApproved, volunteer.HasBackgroundCheckOnFile));
    }

    using (StreamWriter outfile = new StreamWriter(pathToFile))
    {
        outfile.Write(sb.ToString());
    }
    return File(Server.MapPath(virtualPathToDirectory + "/" + fileName), "text/csv", fileName);
}

确保~/temp文件夹已发布到服务器,因为您的发布过程可能不包含它。

Azure网站提供了环境变量,您可以使用它们来访问诸如临时存储文件夹之类的内容。 例如,有一个“ TEMP”变量,您可以访问该变量以获得指向您网站特定的TEMP文件夹的路径。

将方法中的第2行更改为:

        //string physicalPathToDirectory = Server.MapPath(virtualPathToDirectory);
        string physicalPathToDirectory = Environment.GetEnvironmentVariable("TEMP");

然后将最后一行更改为此:

        //return File(Server.MapPath(virtualPathToDirectory + "/" + fileName), "text/csv", fileName);
        return File(pathToFile, "text/csv", fileName);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM