C# Azure Blob容器名称可以保留多长时间?

C# Azure Blob容器名称可以保留多长时间?,c#,azure,azure-storage-blobs,C#,Azure,Azure Storage Blobs,我已经读到azure blob存储容器名称的最大长度必须为63个字符(请参阅),但在读到这篇文章之前,我测试的容器名称比这长,所以尝试了更长的方法: CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey"); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBl

我已经读到azure blob存储容器名称的最大长度必须为63个字符(请参阅),但在读到这篇文章之前,我测试的容器名称比这长,所以尝试了更长的方法:

        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存储听起来是更好的选择。)在测试时,一切似乎都很正常。但是,Microsoft可能会突然强制执行小写和63个字符的限制吗?我还缺少什么吗?

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

CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
这发生在客户端。如果您尝试在此
容器
对象上执行任何服务器端操作(如创建该容器),您将收到一个错误,因为您违反了此63个字符的限制


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

谢谢@GautravMantri。在我的电脑前玩了太多时间后,我误解了容器是什么。我认为它是我从Azure仪表板设置的存储的一个子单元,因为容器是t我在Azure dashboard中设置的东西。如果我添加了代码行container.CreateIfNotExists();我会看到400错误,由容器名称太长或使用大写字符导致的错误请求。我的整个文件夹和文件层次结构(可能)会存在于一个容器中。请您解释一下,
我认为它是我在Azure仪表板中设置的存储的一个子单元,因为容器就是我在Azure仪表板中设置的东西
?据我所知,容器是存储的一个子单元。在仪表板中,添加blob存储时,会给它起一个名称,这是正在创建容器。我以前(错误地)创建了容器认为容器是一个低层的,一个blob存储单元的子单元。我现在意识到它实际上是帐户的子单元。我想我的困惑来自Azure/C如何处理我命名错误的容器变量,而不是给出一个错误。
在仪表板中,当添加blob存储时,会给它一个名称请共享门户的屏幕截图?因此blob存储是一个3级层次:1)存储帐户2)blob容器和3)blob。我不想添加门户的屏幕打印,但我明白你的意思。三级层次结构是有意义的。要在blob容器中使用假定的文件夹,我只需要添加包含完整路径和文件名的blob。