Azure Blob容器名称可以使用多长时间?

时间:2017-03-01 02:43:18

标签: c# azure azure-storage-blobs

我已经读过azure blob存储容器名称最长不得超过63个字符(请参阅https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/naming-and-referencing-containers--blobs--and-metadata),但在阅读本文之前,我测试的容器名称长于此,所以尝试了更长的时间:< / p>

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(@"blob.txt");

这似乎工作正常(注意大写字母,也可能不允许)。我还使用Microsoft Azure Storage Explorer(v0.8.9)打开使用C#创建的文件夹和文件,并在我的blob存储中创建更长的文件夹名称(大小写混合)。

在现实生活中,我想要容器最多大约100个字符(复制具有五个级别文件夹的Windows文件结构,子文件夹名称最多20个字符。如果有必要,我可以强制这些小写字母。大多数我读过的内容似乎暗示blob存储优于文件存储,除非处理遗留系统或需要SMB。基于这种推理,blob存储听起来更好,测试时一切似乎都能正常工作。但是,微软可能突然强加仅限小写和63个字符限制?还有其他我缺少的东西吗?

1 个答案:

答案 0 :(得分:3)

因此容器名称的最大长度可以是63个字符。您没有在代码中收到任何错误的原因是因为此限制是在服务器端强制执行的。使用代码创建CloudBlobContainer的实例时:

CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");

这发生在客户端。如果您尝试对此container对象执行任何服务器端操作(如创建该容器),则会出现错误,因为您违反了此63个字符的限制。

您可以将容器视为Blob存储帐户中的顶级文件夹。换句话说,如果您认为计算机上的C:\为存储帐户,则容器可能为windows。现在每个容器可以有零个或多个blob并创建层次结构的幻觉,您可以将您的blob命名为cursors\aero_arrow.cur。命名blob时,可以包含多于63的字符。但是,由于每个blob都可以通过URL(https://accountname.blob.core.windows.net/containername/blobname)访问,因此最大长度受URL中的最大字符限制,我认为这是1024个字符。 / p>