使用 .NET SDK 从 Azure 文件共享下载空文件时出现 InvalidRange 错误
InvalidRange error when downloading empty file from Azure File Shares with .NET SDK
我正在尝试使用 Azure.Storage.Files.Shares
中提供的工具从 Azure 文件共享下载一个空文件。下载包含超过 0 个字节的文件工作正常。但是,在我的集成测试中,我是 creating/downloading 个空文件。对于我的测试,仅使用填充文件并不是什么大问题,但在我们的应用程序中可能会意外上传并选择空文件进行下载并非不合理。那么问题来了:
我遇到 InvalidRange 错误:
Status: 416 (The range specified is invalid for the current size of the resource.)
ErrorCode: InvalidRange
Content:
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidRange</Code><Message>The range specified is invalid for the current size of the resource.
RequestId:9f04885b-401a-005e-80fa-77d94a000000
Time:2021-07-13T15:16:59.9547272Z</Message></Error>
Headers:
Content-Range: bytes */0
x-ms-request-id: 9f04885b-401a-005e-80fa-77d94a000000
x-ms-client-request-id: a6ee7be7-7ae9-4587-b28c-d6a15cd499e8
x-ms-version: 2020-08-04
x-ms-error-code: InvalidRange
Content-Length: 249
Content-Type: application/xml
Date: Tue, 13 Jul 2021 15:16:59 GMT
Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0
我的下载代码是this example code中提供的代码:
ShareFileDownloadInfo download = file.Download();
using (FileStream stream = File.OpenWrite(localFilePath))
{
download.Content.CopyTo(stream);
}
同样,它适用于非空文件。
The documentation for the underlying storage REST API 说 'Range' 是一个可选参数,当留空时,默认情况下将下载所有文件内容。我知道这是可行的,因为可以通过 Azure 门户手动下载文件。
这是错误还是下载代码不完整?
已确认为错误。跟踪这里 https://github.com/Azure/azure-sdk-for-net/issues/22616
在等待错误修复(这可能需要一段时间)期间,您始终可以在尝试下载之前检查文件的 ContentLength。
ShareFileProperties properties = file.GetProperties();
if (properties.ContentLength > 0)
{
ShareFileDownloadInfo response = file.Download();
response.Content.CopyTo(myStream);
}
我正在尝试使用 Azure.Storage.Files.Shares
中提供的工具从 Azure 文件共享下载一个空文件。下载包含超过 0 个字节的文件工作正常。但是,在我的集成测试中,我是 creating/downloading 个空文件。对于我的测试,仅使用填充文件并不是什么大问题,但在我们的应用程序中可能会意外上传并选择空文件进行下载并非不合理。那么问题来了:
我遇到 InvalidRange 错误:
Status: 416 (The range specified is invalid for the current size of the resource.)
ErrorCode: InvalidRange
Content:
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidRange</Code><Message>The range specified is invalid for the current size of the resource.
RequestId:9f04885b-401a-005e-80fa-77d94a000000
Time:2021-07-13T15:16:59.9547272Z</Message></Error>
Headers:
Content-Range: bytes */0
x-ms-request-id: 9f04885b-401a-005e-80fa-77d94a000000
x-ms-client-request-id: a6ee7be7-7ae9-4587-b28c-d6a15cd499e8
x-ms-version: 2020-08-04
x-ms-error-code: InvalidRange
Content-Length: 249
Content-Type: application/xml
Date: Tue, 13 Jul 2021 15:16:59 GMT
Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0
我的下载代码是this example code中提供的代码:
ShareFileDownloadInfo download = file.Download();
using (FileStream stream = File.OpenWrite(localFilePath))
{
download.Content.CopyTo(stream);
}
同样,它适用于非空文件。 The documentation for the underlying storage REST API 说 'Range' 是一个可选参数,当留空时,默认情况下将下载所有文件内容。我知道这是可行的,因为可以通过 Azure 门户手动下载文件。
这是错误还是下载代码不完整?
已确认为错误。跟踪这里 https://github.com/Azure/azure-sdk-for-net/issues/22616
在等待错误修复(这可能需要一段时间)期间,您始终可以在尝试下载之前检查文件的 ContentLength。
ShareFileProperties properties = file.GetProperties();
if (properties.ContentLength > 0)
{
ShareFileDownloadInfo response = file.Download();
response.Content.CopyTo(myStream);
}