使用C#的Azure Blob存储“找不到方法”

时间:2019-08-02 16:14:04

标签: c# visual-studio azure azure-storage

在天蓝色的存储容器上应用方法GetBlockBlobReference()时出现以下错误。我可以使用Microsoft.WindowsAzure.Storage NuGet来获取此容器,当我导航到此Nuget时也可以看到所有方法,但是在编译时找不到某些方法。

  

System.Private.CoreLib:执行函数时发生异常:   富裕功能。 GoogleAnalytics:找不到方法:'无效   Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.UploadFromStream(System.IO.Stream,   Microsoft.WindowsAzure.Storage.AccessCondition,   Microsoft.WindowsAzure.Storage.Blob.BlobRequestOptions,   Microsoft.WindowsAzure.Storage.OperationContext)'

在Internet上,每个人都说“降级”了Azure Storage Nuget版本,但无法正常工作。我尝试使用版本5、6、7甚至9。我使用.NET Framework 4.7作为类库,由功能项目在版本2上调用。

一些代码(同样我可以检索容器):

    public void UploadFile( CloudBlobContainer container )
    {
        var filePathOnServer = Path.Combine("C:/temp/test/c.csv");

        using (var fileStream = File.OpenRead(filePathOnServer))
        {
            var filename = "c.csv"; // Trim fully pathed filename to just the filename
            var blockBlob = container.GetBlockBlobReference(filename);

            blockBlob.UploadFromStream(fileStream);
        }
    }

我们在其他项目(.NET的其他版本)上完全相同地使用Azure Blob存储,并且工作正常!

谢谢

1 个答案:

答案 0 :(得分:1)

请安装最新的Blob存储nuget软件包:Microsoft.Azure.Storage.Blob, Version 10.0.3.

将其安装在类库和azure函数上。

我使用.net 4.7类库和azure函数v2进行了测试,它可以正常工作。

原因是,.net核心的WindowsAzure.Storage NuGet版本9.3或更低版本仅支持异步方法,因此函数v2(即.net核心)没有定义UploadFromStream()。但是在Microsoft.Azure.Storage.Blob, Version 10.0.3中,它确实为.net核心项目支持异步和非异步方法。