Hantera blobegenskaper och metadata med .NET
Förutom de data som de innehåller stöder blobar systemegenskaper och användardefinierade metadata. Den här artikeln visar hur du hanterar systemegenskaper och användardefinierade metadata med Azure Storage-klientbiblioteket för .NET.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Senaste .NET SDK för operativsystemet. Se till att hämta SDK:et och inte körningen.
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för .NET. Stegen omfattar paketinstallation, tillägg av using
direktiv och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och .NET.
Installera paket
Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av dotnet add package
kommandot . Azure.Identity-paketet behövs för lösenordslösa anslutningar till Azure-tjänster.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Lägga till using
direktiv
Lägg till dessa using
direktiv överst i kodfilen:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Vissa kodexempel i den här artikeln kan kräva ytterligare using
direktiv.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Du kan registrera en tjänstklient för beroendeinmatning i en .NET-app.
Du kan också skapa klientobjekt för specifika containrar eller blobar. Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att fungera med containeregenskaper eller metadata. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda Rollen Storage Blob Data Reader eller senare för get-åtgärderna och Storage Blob Data Contributor eller senare för de angivna åtgärderna. Mer information finns i auktoriseringsvägledningen för Set Blob Properties (REST API), Get Blob Properties (REST API), Set Blob Metadata (REST API) eller Get Blob Metadata (REST API).
Om egenskaper och metadata
Systemegenskaper: Systemegenskaper finns på varje Blob Storage-resurs. Vissa av dem kan läsas eller ställas in, medan andra är skrivskyddade. Under täcket motsvarar vissa systemegenskaper vissa standard-HTTP-huvuden. Azure Storage-klientbiblioteket för .NET underhåller dessa egenskaper åt dig.
Användardefinierade metadata: Användardefinierade metadata består av ett eller flera namn/värde-par som du anger för en Blob Storage-resurs. Du kan använda metadata för att lagra ytterligare värden med resursen. Metadatavärden är endast för dina egna syften och påverkar inte hur resursen beter sig.
Metadatanamn/värdepar är giltiga HTTP-huvuden och bör följa alla begränsningar som styr HTTP-huvuden. Mer information om namngivningskrav för metadata finns i Metadatanamn.
Kommentar
Blobindextaggar ger också möjlighet att lagra godtyckliga användardefinierade nyckel-/värdeattribut tillsammans med en Azure Blob Storage-resurs. Även om det liknar metadata indexeras endast blobindextaggar automatiskt och görs sökbara av den interna blobtjänsten. Metadata kan inte indexeras och frågas om du inte använder en separat tjänst, till exempel Azure Search.
Mer information om den här funktionen finns i Hantera och hitta data på Azure Blob Storage med blobindex.
Ange och hämta egenskaper
I följande kodexempel anges systemegenskaperna ContentType
och ContentLanguage
på en blob.
Om du vill ange egenskaper för en blob anropar du SetHttpHeaders eller SetHttpHeadersAsync. Alla egenskaper som inte uttryckligen anges rensas. Följande kodexempel hämtar först de befintliga egenskaperna på blobben och använder dem sedan för att fylla i rubrikerna som inte uppdateras.
public static async Task SetBlobPropertiesAsync(BlobClient blob)
{
Console.WriteLine("Setting blob properties...");
try
{
// Get the existing properties
BlobProperties properties = await blob.GetPropertiesAsync();
BlobHttpHeaders headers = new BlobHttpHeaders
{
// Set the MIME ContentType every time the properties
// are updated or the field will be cleared
ContentType = "text/plain",
ContentLanguage = "en-us",
// Populate remaining headers with
// the pre-existing properties
CacheControl = properties.CacheControl,
ContentDisposition = properties.ContentDisposition,
ContentEncoding = properties.ContentEncoding,
ContentHash = properties.ContentHash
};
// Set the blob's properties.
await blob.SetHttpHeadersAsync(headers);
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
I följande kodexempel hämtas en blobs systemegenskaper och några av värdena visas.
private static async Task GetBlobPropertiesAsync(BlobClient blob)
{
try
{
// Get the blob properties
BlobProperties properties = await blob.GetPropertiesAsync();
// Display some of the blob's property values
Console.WriteLine($" ContentLanguage: {properties.ContentLanguage}");
Console.WriteLine($" ContentType: {properties.ContentType}");
Console.WriteLine($" CreatedOn: {properties.CreatedOn}");
Console.WriteLine($" LastModified: {properties.LastModified}");
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
Ange och hämta metadata
Du kan ange metadata som ett eller flera namn/värde-par på en blob- eller containerresurs. Om du vill ange metadata lägger du till namn/värde-par i Metadata
samlingen på resursen. Anropa sedan någon av följande metoder för att skriva värdena:
I följande kodexempel anges metadata på en blob. Ett värde anges med hjälp av samlingens Add
metod. Det andra värdet anges med implicit nyckel-/värdesyntax.
public static async Task AddBlobMetadataAsync(BlobClient blob)
{
Console.WriteLine("Adding blob metadata...");
try
{
IDictionary<string, string> metadata =
new Dictionary<string, string>();
// Add metadata to the dictionary by calling the Add method
metadata.Add("docType", "textDocuments");
// Add metadata to the dictionary by using key/value syntax
metadata["category"] = "guidance";
// Set the blob's metadata.
await blob.SetMetadataAsync(metadata);
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
I följande kodexempel läss metadata på en blob.
Om du vill hämta metadata anropar du metoden GetProperties eller GetPropertiesAsync på din blob eller container för att fylla i metadatasamlingen och läser sedan värdena, som du ser i exemplet nedan. Metoden GetProperties
hämtar blobegenskaper och metadata genom att anropa både åtgärden Hämta blobegenskaper och åtgärden Hämta blobmetadata .
public static async Task ReadBlobMetadataAsync(BlobClient blob)
{
try
{
// Get the blob's properties and metadata.
BlobProperties properties = await blob.GetPropertiesAsync();
Console.WriteLine("Blob metadata:");
// Enumerate the blob's metadata.
foreach (var metadataItem in properties.Metadata)
{
Console.WriteLine($"\tKey: {metadataItem.Key}");
Console.WriteLine($"\tValue: {metadataItem.Value}");
}
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
Resurser
Mer information om hur du hanterar systemegenskaper och användardefinierade metadata med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.
REST API-åtgärder
Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för att hantera systemegenskaper och användardefinierade metadata använder följande REST API-åtgärder:
- Ange blobegenskaper (REST API)
- Hämta blobegenskaper (REST API)
- Ange blobmetadata (REST API)
- Hämta blobmetadata (REST API)
Klientbiblioteksresurser
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för .NET. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din .NET-app.