Dela via


Skapa en blobcontainer med .NET

Blobar i Azure Storage är ordnade i containrar. Innan du kan ladda upp en blob måste du först skapa en container. Den här artikeln visar hur du skapar containrar med Azure Storage-klientbiblioteket för .NET.

Förutsättningar

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 Komma 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 skapa en container. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Skapa container (REST API).

Om namngivning av containrar

Ett containernamn måste vara ett giltigt DNS-namn eftersom det utgör en del av den unika URI som används för att adressera containern eller dess blobar. Följ dessa regler när du namnger en container:

  • Containernamn kan vara mellan 3 och 63 tecken långa.
  • Containernamn måste börja med en bokstav eller siffra och får endast innehålla gemener, siffror och bindestreck (-).
  • På varandra följande bindestreckstecken tillåts inte i containernamn.

URI:n för en containerresurs är formaterad på följande sätt:

https://my-account-name.blob.core.windows.net/my-container-name

Skapa en container

Om du vill skapa en container anropar du någon av följande metoder från BlobServiceClient klassen:

Du kan också skapa en container med någon av följande metoder från BlobContainerClient klassen:

Dessa metoder utlöser ett undantag om det redan finns en container med samma namn.

Containrar skapas omedelbart under lagringskontot. Det går inte att kapsla en container under en annan.

I följande exempel används ett BlobServiceClient objekt för att skapa en container asynkront:

//-------------------------------------------------
// Create a container
//-------------------------------------------------
private static async Task<BlobContainerClient> CreateSampleContainerAsync(BlobServiceClient blobServiceClient)
{
    // Name the sample container based on new GUID to ensure uniqueness.
    // The container name must be lowercase.
    string containerName = "container-" + Guid.NewGuid();

    try
    {
        // Create the container
        BlobContainerClient container = await blobServiceClient.CreateBlobContainerAsync(containerName);

        if (await container.ExistsAsync())
        {
            Console.WriteLine("Created container {0}", container.Name);
            return container;
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }

    return null;
}

Skapa rotcontainern

En rotcontainer fungerar som standardcontainer för ditt lagringskonto. Varje lagringskonto kan ha en rotcontainer som måste ha namnet $root. Rotcontainern måste skapas eller tas bort uttryckligen.

Du kan referera till en blob som lagras i rotcontainern utan att inkludera rotcontainerns namn. Med rotcontainern kan du referera till en blob på den översta nivån i lagringskontohierarkin. Du kan till exempel referera till en blob som finns i rotcontainern på följande sätt:

https://myaccount.blob.core.windows.net/default.html

I följande exempel skapas rotcontainern synkront:

//-------------------------------------------------
// Create root container
//-------------------------------------------------
private static void CreateRootContainer(BlobServiceClient blobServiceClient)
{
    try
    {
        // Create the root container or handle the exception if it already exists
        BlobContainerClient container =  blobServiceClient.CreateBlobContainer("$root");

        if (container.Exists())
        {
            Console.WriteLine("Created root container.");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }
}

Resurser

Mer information om hur du skapar en container 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 skapa en container använder följande REST API-åtgärd:

Klientbiblioteksresurser