2016-11-10 27 views
0

TL; DR;使用cloudBlockBlob.OpenWrite()时需要更新SAS吗?如果是,如何?续传Sas for BlockBlob并从流上传

这是一个后续,问到:使用blob.OpenWrite() Upload Big ZipArchive-MemoryStream to Azure

我设法压缩ZIP档案上传至斑点:

CloudBlockBlob blob = container.GetBlockBlobReference(SAS); 
using (ZipArchive zArch = new ZipArchive(blob.OpenWrite(), ZipArchiveMode.Create)) 
{ 
    ZipArchiveEntry entry = zArch.CreateEntry("BigFile", CompressionLevel.Optimal); 
    using (Stream stream = entry.Open()) 
    { 
     SaveBigFileToStream(stream); 
    } 
} 

共享访问签名被认为是由于短命尽可能

我现在的问题是,我如何确保SAS不会过期? 上传只验证一次SAS吗?

+1

这听起来不太难听:)为什么不把它设置为10秒钟,看看会发生什么?你可以尝试这样做,而你等待看看是否有人知道他们头顶的答案。 – juunas

+0

好吧,这是一个伟大的想法:)但即使我知道我需要刷新它,我不知道如何^^,但让最好的希望(我不需要更新:)) –

回答

1

您需要确保SAS在上传过程中不会过期,因为将一个大文件上传到Azure Blob服务是由许多单独进行身份验证的HTTP请求组成的。

+0

谢谢, 很高兴知道。但是,我将如何在C#Azure-Api中执行此操作,是否可以设置SasEndpoint?或者我该如何告诉Blob,目前正在上传他拥有新的Sas?祝好Flo :) –

+0

如果您通过逐页放置页面来控制上传过程,您可以随时更新SAS并在下次请求时使用新的SAS。但是,如果您只是简单地调用UploadFile或UploadStream,则不能在中间更改SAS。 –

+0

所以我不得不改变上传的程序?这意味着我无法再从Stream中上传,就像我的代码示例中那样? –