C#中的Azure存儲入門
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 計價工具,可根據選擇的功能如性能層、冗餘設置和數據操作來估算費用。
Tim 在 Azure 入口網站中選擇了通用用途 v2 的區塊 Blob 儲區,並為經常訪問的文件配置了熱存取層。 他確保儲存帳戶使用本地冗餘儲存 (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 網頁應用程式。 雖然可以使用像 Razor Pages 或 Blazor 伺服器這樣的任何 UI 類型,但他選擇了 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
他構建了兩個主要的非同步方法:
上傳文件邏輯
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 應用整合
Home 控制器被修改以使用 IBlobStorage。 它包含:
-
一個 UploadFile POST 方法以驗證輸入然後調用 UploadFileAsync。
- 一個 GetFile POST 方法以檢查 URL 然後調用 DownloadFileAsync。
每個方法都與存儲客戶端交互,以安全地處理 Blob 文件,無論是上傳還是下載。
Razor 視圖 UI 檔案操作
在 Index.cshtml 中,Tim 設置了:
-
一個用於上傳文件的表單使用 input type="file" 和 Bootstrap 樣式。
-
第二個表單用於使用其 URI 下載文件。
-
邊緣情況(例如缺少文件或 URI 無效)的錯誤信息處理。
- 顯示區段,顯示成功上傳後產生的 Blob URI(https)。
Tim 還使用 List
測試與驗證檔案安全性
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 Storage(C#)的深入內容。
