c# - CloudBlobContainer .Exists() 将挂起/超时

标签 c# azure blob

由于某种原因,调用 .Exists().CreateIfNotExists().Create() 将挂起并且永远不会返回。我实际上并没有遇到超时异常,我只是认为人们可能会搜索该术语。

具体代码如下:

var container = _blobClient.GetContainerReference("report_dunderMifflin_details");

container.CreateIfNotExists(BlobContainerPublicAccessType.Off);

//alternatively, because I know it doesn't exist yet
//I can just call Create and it will hang too
container.Create();

最佳答案

我尝试通过 Azure 门户手动创建相同的容器 (report_dunderMifflin_details),但出现以下异常:

Container names can contain only letters, numbers, and hyphens and must be lowercase. The name must start with a letter or a number. The name can't contain two consecutive hyphens.

当我将容器名称从 report_dunderMifflin_details 更改为 report-dundermifflin-details 后,它就工作得很好。令人失望的是,Windows.AzureStorage 类中没有抛出任何异常。

编辑1:

看起来,即使名称使用正确的格式,在已经存在的容器上调用Create()也会导致调用。瘸。

编辑2:

我已经开始在 Azure SDK 之上编写一个外观,这样它就不太复杂,并且实现了用于模拟/测试目的的接口(interface)。我将此辅助方法添加到我的外观中,以检查是否存在错误的建议容器名称。

private void CheckContainer(string containerName)
{
    var invalidNameMessage = "Container names can contain only letters, numbers, and hyphens and must be lowercase. The name must start with a letter or a number. The name can't contain two consecutive hyphens.";

    var anyInvalidChars = new Regex("[^0-9a-z-]");
    if (anyInvalidChars.IsMatch(containerName))
        throw new ArgumentException(invalidNameMessage);

    var startsWithHyphen = new Regex("$-");
    if (startsWithHyphen.IsMatch(containerName))
        throw new ArgumentException(invalidNameMessage);

    var twoHyphens = new Regex("--");
    if (twoHyphens.IsMatch(containerName))
        throw new ArgumentException(invalidNameMessage);
}

关于c# - CloudBlobContainer .Exists() 将挂起/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980522/

相关文章:

c# - DependencyPropertyChanged 回调事件未被触发

c# - 接收 eBay SOAP 通知消息

c# - C#中如何处理空异常

php - Oracle Blob 作为 PHP 页面中的 img src

java - JPA:我应该将 BLOB 存储在与 fetch Lazy 相同的表中,还是应该将其存储到另一个表并 fetch lazy 一对一关系

c# - DataGrid 的 CellEditingTemplate 和编辑模式下的焦点

azure - 标签未使用 Azure ARM 模板部署到服务器场

c# - Web API 中的 Azure 身份验证 - 验证后角色声明丢失

c# - Azure 服务总线中的死信队列中的消息是否会过期?

mysql - 将附件保存到数据库 : blob vs path reference