如何在将文件上载到Azure CDN时获取有关400错误请求错误的更多信息

时间:2017-01-13 04:27:08

标签: c# .net azure azure-storage

有没有办法可以找到有关Azure Storage拒绝邮件的详细信息?有什么方法可以通过Azure打开调试?通过电线鲨鱼的更多细节?

这发生在CDN

尝试将文件上传到Azure db.crashntsb.copyTo("crashntsbclean") 时,我尝试了8个 400错误请求的解决方案。似乎人们以各种方式指出代码的问题,错误只是没有表达。

我花了大约4个小时没有运气,没有更具体的看法。

请注意,我还没有发布代码,因为我没有找到解决我的具体问题的方法,就像找到我可以在更多情况下使用的解决方案一样。

1 个答案:

答案 0 :(得分:5)

我建议查看StorageException类,尤其是类RequestInformation类的RequestResult成员。它包含有关错误的有用信息。

这是一个例子。

    static void UnderstandStorageException()
    {
        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var client = account.CreateCloudBlobClient();
        var container = client.GetContainerReference("container");
        var blockBlob = container.GetBlockBlobReference("something.txt");
        try
        {
            blockBlob.UploadFromFile(@"D:\test.txt");
            blockBlob.AcquireLease(TimeSpan.FromSeconds(10), Guid.NewGuid().ToString());
            blockBlob.Delete();
        }
        catch (StorageException excep)
        {
            var requestInformation = excep.RequestInformation;
            Console.WriteLine(requestInformation.HttpStatusCode);
            Console.WriteLine(requestInformation.HttpStatusMessage);
            Console.WriteLine(requestInformation.ExtendedErrorInformation.ErrorCode);
            Console.WriteLine(requestInformation.ExtendedErrorInformation.ErrorMessage);
        }
    }

在这种情况下,我试图获取blob的租约,但我指定10秒作为租约持续时间,这是一个无效的输入。这将从Azure存储中生成400状态代码。当我执行代码时,我得到以下信息:

HTTP Status Code: 400
HTTP Status Message: The value for one of the HTTP headers is not in the correct format.
Storage Error Code: InvalidHeaderValue
Storage Error Message: The value for one of the HTTP headers is not in the correct format.
RequestId:04969aab-0001-001c-5965-6df5fe000000
Time:2017-01-13T06:23:25.4667820Z