【问题标题】:Azure Cloud Service There is not enough space on the diskAzure 云服务磁盘空间不足
【发布时间】:2015-07-15 22:30:39
【问题描述】:

我遇到了错误:Exception Details: System.IO.IOException: There is not enough space on the disk.

我知道发生这种情况是因为当用户访问我的页面时,会为他/她下载一个 zip 文件,然后将其解压缩。每个 zip 大约有 45 MB,解压后大约有 50 MB。几次访问页面后我已经开始收到此错误(我相信当下载 1 GB 时)并在本地保存到云服务光盘

我在 Azure 上将其作为云服务运行,服务大小为中等:

本地资源 = 489 GB 应用程序 = 大约。 1.5 GB

有什么方法可以增加我的光盘大小,这样我就可以节省 50 GB 的空间?

编辑

这是我得到错误的部分代码:

using (var client = new WebClient())
        {
            client.DownloadFile(link, HostingEnvironment.MapPath("~/ebookDownloads/" + name));


            using (ZipFile zip = ZipFile.Read(HostingEnvironment.MapPath("~/ebookDownloads/" + name)))
            {
                foreach (var e in zip)
                {
                    e.Extract(folderToCreate, ExtractExistingFileAction.OverwriteSilently); // overwrite == false
                    // var filePath = HttpContext.Server.MapPath("~/ebookDownloads/" + nameOfFolder + "/" + e.FileName);
                    var filePath = Path.Combine(Server.MapPath("~/ebookDownloads/" + nameOfFolder), e.FileName);
                    listOfLinks.Add(new EbooksHelper { Name = e.FileName, Size = BytesToString(new FileInfo(filePath).Length), Url = "/platinum/DownloadEbook?name=" + e.FileName });
                    var y = e;
                }          
            }
        }

【问题讨论】:

  • 或许为 Azure 上的更多存储付费?
  • 但是在哪里可以设置云服务盘的大小呢?我知道有 blob 存储和表存储,但我还没有找到增加本地磁盘大小的选项?
  • 您将这些文件保存在哪里?在本地资源中?您在设置中设置的尺寸是多少?
  • 我认为HostingEnvironment指的磁盘上可用的磁盘空间限制在1-2GB。您应该使用本地存储,我已经更新了我的答案,说明如何获取它的路径。

标签: azure azure-cloud-services


【解决方案1】:

您可以使用本地存储资源,这些资源已添加到您的服务定义中,例如:

<ServiceDefinition>
  <WebRole name="MyService_WebRole" vmsize="Medium">
    <LocalResources>
      <LocalStorage name="LocalStorageName" sizeInMB="50000" cleanOnRoleRecycle="false" />
    </LocalResources>
  </WebRole>
</ServiceDefinition>

要从运行时访问本地存储,您可以使用RoleEnvironment.GetLocalResource(name) 来获取到本地存储的路径。

var localResource = RoleEnvironment.GetLocalResource("LocalStorageName");
var rootPath = localResource.RootPath

【讨论】:

  • 是否需要任何额外的代码来管理 LocalStorage,我记得将它与工作角色一起使用,并且我有这行代码:LocalResource localResource = RoleEnvironment.GetLocalResource("PicStorage"); 我是否也必须像使用 web 角色那样做?
  • 我已经编辑了我的问题,所以你可以看到我的代码出现问题的地方
  • 我也有同样的问题。这会增加 SITEROOT 所在驱动器的大小吗?因为那是我需要的。
猜你喜欢
  • 1970-01-01
  • 2015-10-26
  • 2016-06-08
  • 2013-10-09
  • 2015-12-04
  • 2015-12-30
  • 1970-01-01
  • 2022-01-16
  • 2022-09-28
相关资源
最近更新 更多