Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;磁盘上没有足够的空间;my azure function应用程序从blob存储下载大文件时出错_C#_Azure Functions_Azure Blob Storage - Fatal编程技术网

C# &引用;磁盘上没有足够的空间;my azure function应用程序从blob存储下载大文件时出错

C# &引用;磁盘上没有足够的空间;my azure function应用程序从blob存储下载大文件时出错,c#,azure-functions,azure-blob-storage,C#,Azure Functions,Azure Blob Storage,我有一个azure function应用程序,它将文件从blob存储下载到临时文件夹,处理文件,然后将新文件上传到blob存储 这工作正常,除了当我尝试下载大视频(我正在测试的视频大约是600mb)时,在这种情况下,我得到一个磁盘空间不足的错误。下载较小的文件很好 如果我运行一些代码将可用的驱动器空间输出到日志中,我可以看到我下载文件的驱动器上有足够的可用空间(大约4GB可用空间) 我可以下载到函数应用程序的临时文件夹中的文件大小是否有限制?我在任何文档中都看不到这样的限制 下载的代码没有什么

我有一个azure function应用程序,它将文件从blob存储下载到临时文件夹,处理文件,然后将新文件上传到blob存储

这工作正常,除了当我尝试下载大视频(我正在测试的视频大约是600mb)时,在这种情况下,我得到一个磁盘空间不足的错误。下载较小的文件很好

如果我运行一些代码将可用的驱动器空间输出到日志中,我可以看到我下载文件的驱动器上有足够的可用空间(大约4GB可用空间)

我可以下载到函数应用程序的临时文件夹中的文件大小是否有限制?我在任何文档中都看不到这样的限制


下载的代码没有什么特别之处,但在这里它只是为了完成

using (WebClient webClient = new WebClient())
{
    webClient.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
    webClient.DownloadFile(blobFileUri, filePath);
}

Azure功能的使用计划提供1GB的存储空间

发件人:

存储限制是临时存储中的总内容大小 跨同一应用程序服务计划中的所有应用程序。消费计划使用 用于临时存储的Azure文件

如果您已经使用了超过0.4GB的内存,并且它试图将0.6GB的文件写入临时存储,那么它可能会超过1GB并失败


premium计划提供250GB。

如果您获得的临时目录如下所示:

string tmpFileName = Path.GetTempFileName();
string remoteTempDirectory = Environment.ExpandEnvironmentVariables(@$"%HOME%/render/{DateTime.Today:yyyy-MM-dd}-{Guid.NewGuid()}");
然后,您将在消费计划中获得大约500 MB。如果您使用的是premium,它至少是10GB,可能要多得多

但如果空间不足,您可以将数据存储在网络驱动器上。按如下方式获取目录:

string tmpFileName = Path.GetTempFileName();
string remoteTempDirectory = Environment.ExpandEnvironmentVariables(@$"%HOME%/render/{DateTime.Today:yyyy-MM-dd}-{Guid.NewGuid()}");
函数完成后,请记住删除目录。网络驱动器的速度大约是本地磁盘的5-10倍

此功能将测试您可以在本地驱动器上存储多少数据:

using System.Net;
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

public static IActionResult Run(HttpRequest req, ILogger logger)
{
    Stopwatch stopwatch = Stopwatch.StartNew();
    string tmpFileName = Path.GetTempFileName();
    logger.LogInformation($"Testing maximum file size with {tmpFileName }");
    string bestSize = "?";
    byte[] data = new byte[50 * 1024 * 1024];

    for (int fiftyMegs = 1; fiftyMegs <= 10; fiftyMegs++)
    {
        try
        {
            logger.LogInformation($"Saving file with size { fiftyMegs * 50 } MB...");

            using FileStream file = new FileStream(tmpFileName, FileMode.OpenOrCreate);
            file.Position = file.Length;
            file.Write(data);
            bestSize = $"Saving file with size { fiftyMegs * 50 } MB succeded.";

            logger.LogInformation($"Saving file with size { fiftyMegs * 50 } MB succeded.");
        }
        catch (Exception ex)
        {
            bestSize += Environment.NewLine + $"Saving file with size { fiftyMegs * 50 } MB failed: {ex.Message}";
            logger.LogError($"Saving file with size { fiftyMegs * 50 } MB failed: {ex.Message}");
            break;
        }
    }

    File.Delete(tmpFileName);
    logger.LogInformation($"Saving file test completed.");
    bestSize += Environment.NewLine + stopwatch.Elapsed.ToString();

    return new OkObjectResult(bestSize);
}
使用System.Net;
使用系统诊断;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.Extensions.Primitives;
公共静态IActionResult运行(HttpRequest请求,ILogger记录器)
{
秒表秒表=Stopwatch.StartNew();
字符串tmpFileName=Path.GetTempFileName();
logger.LogInformation($“使用{tmpFileName}测试最大文件大小”);
字符串bestSize=“?”;
字节[]数据=新字节[50*1024*1024];
对于(int-fiftyMegs=1;fiftyMegs)