0

这需要一段时间才能追查。

我有这个有效的代码

            CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
        var uploadedContainer = cloudBlobClient.GetContainerReference("uploadedfiles");
        uploadedContainer.CreateIfNotExists(new BlobRequestOptions() { RetryPolicy = new NoRetry() }, null);

        var directory = uploadedContainer.GetDirectoryReference(path);
        CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"dave.pdf");

但是如果我将最后一行更改为以下内容,我的 blob 触发器会在函数中爆炸

CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"{Guid.NewGuid().ToString()}.pdf");

非常令人沮丧。错误是:

[18/10/2019 14:37:36] 发生了未处理的异常。主机正在关闭。[18/10/2019 14:37:36] Microsoft.WindowsAzure.Storage:服务器遇到内部错误。请稍后再试。

错误信息的大量使用 - 谢谢!

我希望能够在这里使用指南。命名约定的文档似乎说这是在这里找到的合法情况

一定有人有想法!

以下文件名有效

"s-a" "dave.pdf" $"{Guid.New().ToString()}"

这不起作用 $"{Guid.New().ToString()}.pdf"

4

1 回答 1

0

假设它是由 引起的Path.GetFileName,我没有使用这种方法进行测试,我只是使用 guid 进行测试,它可以为我工作。以下是我的测试代码,也许你可以更改GetBlockBlobReference.

       string storageConnectionString = "connection string";

        CloudStorageAccount storageAccount;

        CloudStorageAccount.TryParse(storageConnectionString, out storageAccount);

        CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("test");
        string sourceFile = "C:\\Users\\georgec\\Downloads\\fileshare\\1.txt";

        String Path = "image/";
        var directory = cloudBlobContainer.GetDirectoryReference(Path);

        CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"{Guid.NewGuid().ToString()}.txt");


        await cloudBlockBlob.UploadFromFileAsync(sourceFile);

在此处输入图像描述

于 2019-10-21T06:37:57.447 回答