【发布时间】:2019-08-09 03:01:36
【问题描述】:
nuget 包 Microsoft.Azure.Storage.File 9.4.2 在某处上传文件 26MB 时无限期挂起。
项目的目标是 .NET (Desktop) Framework 4.7.2。
***** 更新 ***** 当尝试使用各种客户端和各种云服务(我在上传到 S3 时遇到相同的问题)尝试上传大型文件时会出现此问题,但仅在 NancyFx Web 应用程序的上下文中。与部署到 Azure 应用服务时在本地发生的问题相同,因此几乎可以肯定它与我的本地开发配置无关。
需要明确的是,当尝试在 NancyFx 应用程序内上传时,上传会挂起;我没有将上传到 NancyFx 应用程序。
目前,我的解决方案是不要从 Nancy 内部上传文件,但如果有人对仍然存在的问题的技术解决方案感兴趣,我会保留这个问题。
***** 结束更新 *****
明确一点,文件上传
尝试使用如下:
public void UploadFileFromFile(string azureFileName, string localFileName)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SafeConfig.AzureFileStorageMaterialConnectionString);
CloudFileClient client = storageAccount.CreateCloudFileClient();
CloudFileShare share = client.GetShareReference(SafeConfig.AzureFileStorageMaterialShareName);
CloudFileDirectory dir = share.GetRootDirectoryReference();
CloudFile fileReference = dir.GetFileReference(azureFileName);
fileReference.UploadFromFile(localFileName);
}
值得注意的是,当我使用 fileReference.UploadFromByteArray() 方法时,客户端会挂起,当我尝试使用各种 *Async 替代方法时也会挂起。
当我尝试使用方法fileReference.UploadFromStream() 时,我得到一个异常“对象不处于可用状态”,我不认为这是一个特别可操作的异常消息。这是我首选的上传方法,但不同的错误体验可能使其成为一个单独的问题。
【问题讨论】:
-
您实际上可以使用 CloudBlockBlob.Upload 文件来上传更大的文件,也可以针对慢速互联网等特殊情况进行调整。有时上传操作会因为互联网连接速度慢而失败。这是一篇非常好的文章,它解释了 UploadFIle 的用法,并通过将较大的文件拆分为较小的文件来进行调整。 red-gate.com/simple-talk/cloud/platform-as-a-service/…
标签: c# .net azure-storage nancy azure-storage-files