C#的Azure儲存簡介
[[academy-video-youtube({"vid": "QCNjregaKVE", "start_time": "0", "title": "Intro To Azure Storage in C#", "creator": "Tim Corey", "length": "1h 05m 37s"})]]
Azure Storage 是由 Microsoft Azure 提供的重要服務,結合 .NET 技術後,成為在雲端儲存和檢索文件的強大工具。 在他的深度教程"Intro to Azure Storage in C#"中,Tim Corey 向觀眾詳細講解如何配置 Azure Storage 帳戶、設置 Azure Blob Storage 並將其整合到 C# ASP.NET Core MVC 專案中。
在這篇文章中,我們將緊跟 Tim 的影片,探索每個過程階段,討論在實際 Azure 開發中使用的關鍵概念和術語。
Azure Storage 定價和規劃
Tim 首先解釋在 C# 應用程式中使用 Azure Storage 的財務效率。 不論您使用 blob 容器來儲存文字文件、圖片或二進位資料,成本始終保持在最低水平。 他介紹了 Azure Pricing Calculator,根據所選功能如性能級別、冗餘設置和資料操作來估算收費。
Tim 在 Azure 入口網站選擇了一般用途 v2 下的 Block Blob Storage,並配置為高級別存取以常被存取的文件。 他確保儲存帳戶使用本地冗餘儲存(LRS)以最小化成本,同時保持安全。
"對於儲存 1 GB 資料和幾千次操作的演示應用程式,成本降至每月 13 美分,"Tim 解釋道。
建立 Azure Storage 帳戶
在 Azure 入口網站中,Tim 展示如何建立新資源組以及對應的 Azure Storage 帳戶。 命名規則很嚴格——儲存帳戶名稱必須是唯一的、小寫的,且不得包含連字元。
設置過程中,他禁用了地理冗餘儲存以節省成本,這是對於從事原型或本地環境開發的開發者來說的關鍵提示。 他還在容器層級啟用了匿名存取,但僅用於演示目的——警告稱實際生產環境需要安全存取。

Tim 還涵蓋了存取金鑰、連接字串和儲存帳戶名稱——所有這些在您的 C# 專案連接至 Azure 資源時都是必需的。
理解 Azure Blob Storage
Tim 強調 blob 容器在您的 Azure 儲存帳戶中用來組織資料的方法。 他避免通過入口網站手動建立新容器,而是計劃使用 Azure SDK for .NET 在程式碼中生成它。
他解釋說,應用程式中將使用在帳戶安全設置下可見的安全存取金鑰和連接字串來進行儲存客戶端庫驗證。
開始 ASP.NET Core 專案
Tim 使用 Visual Studio 建立了一個 .NET 9 MVC 網頁應用。 雖然任何 UI 型別如 Razor Pages 或 Blazor Server 都可使用,但他選擇 MVC 來做演示。
在 19:35 的時候,在 secrets.json 中,他安全地儲存了敏感憑證:
連接字串
儲存帳戶金鑰
容器名稱
- 儲存帳戶名稱

Tim 解釋說,appsettings.json 不應包含秘密,因為它會提交到源程式碼庫中。 而是使用使用者秘密將秘密儲存在本地,特別是在開發期間。
安裝所需的 NuGet 套件
為了與 Azure Blob Storage 互動,Tim 安裝了 Azure.Storage.Blobs NuGet 套件。 他對於 Microsoft 如何透過 Azure SDK 進行功能模組化表示讚賞,這使更小、更易維護的應用成為可能。

"現在,您只需透過 NuGet 獲取您所需的東西——如 Azure Blob 客戶端庫,而不是將所有內容綁定到框架中,"Tim 指出。
配置 Azure Storage 的選項模式
接著,Tim 建立了一個 POCO 類(BlobStorageOptions),以與他的配置中的鍵相匹配。他使用選項模式將配置綁定到強型別物件,使配置中心化且可測試。
這種設置便於 .NET 應用在各環境中一致地使用 Azure 配置。
實施 Blob Storage 服務邏輯
Tim 新增了一個名為 DataAccess 的新資料夾,並實施了一個名為 BlobStorage.cs 的類。 在其中,他使用 IOptions<BlobStorageOptions> 注入了配置,並將其儲存在一個私有實例中。
他構建了兩個主要的異步方法:
上傳文件邏輯
UploadFileAsync 方法:
接受來自 MVC 前端的 IFormFile。
使用連接字串和容器名稱從 Azure Storage SDK 建立 BlobContainerClient。
檢查現有容器或在其不存在時建立新容器。
將存取策略設置為無,確保容器未公開存取。
- 使用 BlobClient 物件從流中上傳文件。
Tim 使用一個 using 語句和一個 await 調用來安全地處理文件流,防止記憶體洩漏。
下載文件邏輯
在 DownloadFileAsync 中,Tim:
接受一個字串文件名或完整的 blob URI。
使用 URI 和安全憑證建立新的 BlobClient。
使用 DownloadStreamingAsync 下載文件。
- 將流包裝在 FileContentResult 中以允許從瀏覽器下載。
這確保了文件的安全性,且僅可透過應用程式存取——而非直接透過 URL 猜測存取。
注入 Blob Storage 到相依注入中
Tim 定義了他的類的介面(IBlobStorage)並將其註冊為 .NET DI 容器中的 Singleton。 由於類是無狀態的且僅使用配置值,因此 Singleton 是最佳選擇。
整合 MVC App
Home 控制器被修改為使用 IBlobStorage。 它包含:
一個驗證輸入並調用 UploadFileAsync 的 UploadFile POST 方法。
- 一個檢查 URL 然後調用 DownloadFileAsync 的 GetFile POST 方法。
每個方法都與儲存客戶端互動以安全處理 blob 文件,無論是上傳還是下載。
用於文件操作的 Razor View UI
在 Index.cshtml 中,Tim 設置了:
一個使用 input type="file" 和 Bootstrap 樣式上傳文件的表單。
一個使用其 URI 下載文件的第二個表單。
邊緣情境下如缺失文件或無效 URI 的錯誤資訊處理。
- 顯示節展示成功上傳後被生成的 blob URI (https)。
Tim 還使用 List<string> 處理錯誤,將錯誤清晰地呈現在 UI 上,使使用者能知曉像是遺漏文件選擇等問題。
測試和驗證文件安全
Tim 上傳了一個文字文件並嘗試在瀏覽器中直接存取該 URI——如預期般失敗,因為無存取策略。
在臨時更改 Azure 入口網站中的存取級別後,該文件便可以直接連結下載。 但他迅速將其恢復為私有,強調 Azure 提供了細緻入微的安全控制。
Tim 的最終建議
Tim 最後提醒開發者,僅需最小投資,Microsoft Azure 便能提供大量價值。 有了這些工具:
NuGet 套件
Azure SDK
Visual Studio
Azure 入口網站
- 安全的連接字串和金鑰
您可以快速構建生產就緒的儲存解決方案,使用 C#。 無論您是在開發大型系統還是小型測試專案,Azure Blob Storage 是一個可擴展且具成本效益的選擇。
"您需按使用付費——所以只需請求您所需要的部分,"Tim 強調。
摘要
從建立儲存帳戶和配置 blob 容器,到在 MVC 應用程式中安全地處理上傳和下載,Tim Corey 提供了涵蓋使用 Azure Storage 與 .NET 的完整生命週期的詳細指導。
有了這份指南和 Tim 的影片,您可以安心開始使用 Azure Blob Storage——同時保持控制、降低成本,並遵循雲端開發中的最佳實踐。
務必查看他的完整影片來獲得更多澄清,並造訪他的YouTube 頻道以獲得更多關於 Azure 儲存 (C#) 的深入內容。

