簡體   English   中英

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

[英]Azure Blob Storage "Method not found" with C#

在 Azure 存儲容器上應用GetBlockBlobReference()方法時出現以下錯誤。 我可以使用Microsoft.WindowsAzure.Storage NuGet 獲取這個容器,當我導航到這個 Nuget 時,我也可以看到所有方法,但是在編譯時找不到一些方法。

System.Private.CoreLib:執行功能時出現異常:AffluenceFunction。 GoogleAnalytics:找不到方法:'Void Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.UploadFromStream(System.IO.Stream, Microsoft.WindowsAzure.Storage.AccessCondition, Microsoft.WindowsAzure.Storage.Blob.BlobRequestOptions, Microsoft.WindowsAzure.Storage.操作上下文)'

在互聯網上,每個人都說“降級”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 存儲,並且工作正常!

謝謝

請安裝最新的 blob 存儲 nuget 包: Microsoft.Azure.Storage.Blob,版本 10.0.3。

將它安裝在類庫和 azure 函數上。

我對 .net 4.7 類庫和 azure 函數 v2 進行了測試,它可以工作。

原因是, WindowsAzure.Storage NuGet 9.3 或以下版本僅支持 async 方法,因此函數 v2(即 .net core)沒有定義UploadFromStream() 但是在Microsoft.Azure.Storage.Blob, Version 10.0.3 ,它確實支持 .net 核心項目的異步和非異步方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM