我正在从WindowsAzure.StorageClient 1.7迁移到WindowsAzure.Storage 2.0,并且现在正在致力于异常的管理。遵循此guide和其他来源后,我发现我不得不从

try
{
    // Something
}
catch (StorageClientException e)
{
    switch (e.ErrorCode)
    {
        case StorageErrorCode.ContainerNotFound:
        case StorageErrorCode.ResourceNotFound:
        case StorageErrorCode.BlobNotFound:
        case StorageErrorCode.ConditionFailed:
            // Do something
    }
}


try
{
    // Something
}
catch (StorageException e)
{
    switch (e.RequestInformation.ExtendedErrorInformation.ErrorCode)
    {
        case StorageErrorCodeStrings.ContainerNotFound:
        case StorageErrorCodeStrings.ResourceNotFound:
        case BlobErrorCodeStrings.BlobNotFound:
        case StorageErrorCodeStrings.ConditionNotMet:
            // Do something
    }
}

看起来很简单。
问题是ExtendedErrorInformation始终等于null。 HttpStatusMessage应该说“指定的blob不存在。”。

我以为它是由测试环境的模拟器引起的,但是在真实的Azure环境中进行尝试使我陷入了同样的境地。

任何想法?

最佳答案

另一种选择是改为查看RequestInformation.HttpStatusCode。无论如何,这似乎更可靠。您的代码可以很容易地转换为:

try
{
    // Something
}
catch (StorageException e)
{
    switch (e.RequestInformation.HttpStatusCode)
    {
        case (int)HttpStatusCode.NotFound:
        case (int)HttpStatusCode.PreconditionFailed:
        // Do something
    }
}

10-04 11:46