Udostępnij przez


Tworzenie oprogramowania dla usługi Azure Files przy użyciu platformy .NET

Dowiedz się, jak tworzyć aplikacje platformy .NET korzystające z usługi Azure Files do przechowywania danych. Azure Files to zarządzana usługa udziału plików w chmurze. Zapewnia w pełni zarządzane udziały plików, które są dostępne za pośrednictwem standardowych protokołów SMB (Server Message Block) i Network File System (NFS). Usługa Azure Files udostępnia również interfejs API REST na potrzeby programowego dostępu do udziałów plików.

W tym artykule dowiesz się więcej o różnych podejściach do opracowywania za pomocą usługi Azure Files na platformie .NET oraz o tym, jak wybrać podejście, które najlepiej odpowiada potrzebom aplikacji. Dowiesz się również, jak utworzyć podstawową aplikację konsolową, która współdziała z zasobami usługi Azure Files.

Dotyczy

Model zarządzania Model rozliczania Poziom mediów Redundancja SMB NFS
Microsoft.Storage Przygotowana wersja 2 HDD (standardowa) Lokalne (LRS) Tak Nie
Microsoft.Storage Przygotowana wersja 2 HDD (standardowa) Strefa (ZRS) Tak Nie
Microsoft.Storage Przygotowana wersja 2 HDD (standardowa) Geo (GRS) Tak Nie
Microsoft.Storage Przygotowana wersja 2 HDD (standardowa) Strefa geograficzna (GZRS) Tak Nie
Microsoft.Storage Zaprovisionowana wersja 1 SSD klasy premium Lokalne (LRS) Tak Nie
Microsoft.Storage Zaprovisionowana wersja 1 SSD klasy premium Strefa (ZRS) Tak Nie
Microsoft.Storage Płatność na bieżąco HDD (standardowa) Lokalne (LRS) Tak Nie
Microsoft.Storage Płatność na bieżąco HDD (standardowa) Strefa (ZRS) Tak Nie
Microsoft.Storage Płatność na bieżąco HDD (standardowa) Geo (GRS) Tak Nie
Microsoft.Storage Płatność na bieżąco HDD (standardowa) Strefa geograficzna (GZRS) Tak Nie

Informacje o tworzeniu aplikacji platformy .NET za pomocą usługi Azure Files

Usługa Azure Files oferuje deweloperom platformy .NET kilka sposobów uzyskiwania dostępu do danych i zarządzania zasobami w usłudze Azure Files. W poniższej tabeli wymieniono metody, podsumowano sposób ich działania i przedstawiono wskazówki dotyczące tego, kiedy należy używać poszczególnych metod:

Metoda Jak to działa Kiedy używać
Standardowe biblioteki we/wy plików Używa wywołań interfejsu API na poziomie systemu operacyjnego za pośrednictwem udostępnionych zasobów plikowych Azure zamontowanych używając protokołu SMB lub NFS. Podczas zamontowania udziału plików przy użyciu protokołu SMB/NFS można użyć bibliotek we/wy plików dla języka programowania lub frameworka, na przykład System.IO dla platformy .NET. Masz aplikacje biznesowe z istniejącym kodem, który używa standardowych operacji wejścia/wyjścia plików, i nie chcesz przebudowywać kodu, aby aplikacja działała z udziałem plików platformy Azure.
FileREST API Bezpośrednie wywołanie punktów końcowych HTTPS w celu interakcji z danymi przechowywanymi w usłudze Azure Files. Zapewnia programową kontrolę nad zasobami do udostępniania plików. Zestaw Azure SDK udostępnia bibliotekę klienta udziałów plików (Azure.Storage.Files.Shares), która bazuje na interfejsie API FileREST, umożliwiając interakcję z operacjami interfejsu API FileREST za pomocą znanych paradygmatów języka programowania .NET. Tworzysz usługi w chmurze i aplikacje w chmurze dla klientów i chcesz używać zaawansowanych funkcji, które nie są dostępne za pośrednictwem usługi System.IO.
Interfejs REST API dostawcy zasobów przechowywania Używa Azure Resource Manager (ARM) do zarządzania kontami przechowywania i udziałami plików. Wywołuje punkty końcowe interfejsu API REST dla różnych operacji zarządzania zasobami. Aplikacja lub usługa musi wykonywać zadania zarządzania zasobami, takie jak tworzenie, usuwanie lub aktualizowanie kont przechowywania lub udostępniania plików.

Aby uzyskać ogólne informacje na temat tych podejść, zobacz Omówienie tworzenia aplikacji w usłudze Azure Files.

Ten artykuł koncentruje się na pracy z zasobami usługi Azure Files przy użyciu następujących metod:

Wymagania wstępne

Konfigurowanie środowiska

W tej sekcji przedstawiono kroki przygotowywania aplikacji konsolowej platformy .NET do pracy z usługą Azure Files.

Tworzenie projektu

Jeśli nie masz jeszcze aplikacji platformy .NET, utwórz aplikację przy użyciu programu Visual Studio lub interfejsu wiersza polecenia platformy .NET. W tym artykule utworzymy aplikację konsolową dla uproszczenia.

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt. Lub jeśli jesteś w programie Visual Studio, przejdź do pozycji Plik>nowy>projekt.
  2. W oknie dialogowym wybierz pozycję Aplikacja konsolowa dla języka C#, a następnie wybierz pozycję Dalej.
  3. Wprowadź nazwę projektu, pozostaw wartości domyślne, a następnie wybierz pozycję Dalej.
  4. W polu Framework wybierz najnowszą zainstalowaną wersję platformy .NET. Pozostaw inne wartości domyślne, a następnie wybierz pozycję Utwórz.

Instalowanie pakietu

Jeśli planujesz interakcję z usługą Azure Files przy użyciu System.IO przestrzeni nazw, nie musisz instalować żadnych dodatkowych pakietów. Przestrzeń nazw System.IO jest dołączona do .NET SDK. Jeśli planujesz korzystać z bibliotek klienta udostępniania plików dla platformy .NET lub zarządzania Azure Storage dla platformy .NET, zainstaluj pakiet za pomocą narzędzia NuGet.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet.

  2. W Menedżer pakietów NuGet wybierz pozycję Przeglądaj. Następnie wyszukaj i wybierz odpowiedni pakiet, a następnie wybierz pozycję Zainstaluj. W przypadku biblioteki klienta udziałów plików wybierz pozycję Azure.Storage.Files.Shares. W przypadku biblioteki zarządzania usługą Azure Storage wybierz pozycję Azure.ResourceManager.Storage. W przypadku biblioteki tożsamości platformy Azure, która jest wymagana w przypadku połączeń bez hasła, wybierz pozycję Azure.Identity.

    Ten krok powoduje zainstalowanie pakietu i jego zależności.

Dodaj dyrektywy using

Jeśli planujesz użyć przestrzeni nazw System.IO, dodaj następującą dyrektywę using na początku pliku Program.cs.

using System.IO;

Jeśli planujesz używać biblioteki klienta udostępniania plików dla platformy .NET, dodaj następującą dyrektywę 'using' w górnej części pliku Program.cs

using Azure.Storage.Files.Shares;

Jeśli planujesz korzystać z biblioteki zarządzania Azure Storage dla .NET, dodaj następującą dyrektywę using na początku pliku Program.cs:

using Azure.ResourceManager;

Aby użyć biblioteki tożsamości platformy Azure na potrzeby połączeń bez hasła z usługami platformy Azure, dodaj następującą dyrektywę using na początku pliku Program.cs :

using Azure.Identity;

Praca z usługą Azure Files przy użyciu System.IO

Standardowe biblioteki we/wy plików to najbardziej typowy sposób uzyskiwania dostępu do zasobów usługi Azure Files i pracy z nimi. Podczas montowania udziału plików przy użyciu protokołu SMB lub NFS system operacyjny przekierowuje żądania interfejsu API dla lokalnego systemu plików. Takie podejście umożliwia korzystanie ze standardowych bibliotek we/wy plików, takich jak System.IO, do interakcji z plikami i katalogami w udziale.

Rozważ użycie System.IO w przypadku, gdy aplikacja wymaga:

  • Zgodność aplikacji: Idealne rozwiązanie dla aplikacji biznesowych z istniejącym kodem, który już używa metody System.IO. Nie musisz ponownie pisać kodu, aby aplikacja działała z współdzieleniem plików Azure.
  • Łatwość użycia:System.IO jest dobrze znany przez deweloperów i łatwy w użyciu. Kluczową wartością usługi Azure Files jest to, że uwidacznia natywne interfejsy API systemu plików za pośrednictwem protokołu SMB i systemu plików NFS.

W tej sekcji dowiesz się, jak używać System.IO, aby pracować z zasobami usługi Azure Files.

Więcej informacji i przykładów zawierają następujące zasoby:

Zamontować udział plików

Aby użyć System.IO, należy najpierw zamontować zasób plików. Zapoznaj się z następującymi zasobami, aby uzyskać wskazówki dotyczące sposobu instalowania udziału plików przy użyciu protokołu SMB lub NFS:

W tym artykule użyjemy następującej ścieżki, aby odwołać się do zamontowanego udziału plików SMB w systemie Windows:

string fileSharePath = @"Z:\file-share";

Przykład: nawiązywanie połączenia z udziałem plików i wyliczanie katalogów przy użyciu System.IO

W poniższym przykładzie kodu pokazano, jak nawiązać połączenie do zasobu udostępnionego i wyświetlić listę katalogów w nim:

using System.IO;

string fileSharePath = @"Z:\file-share";

EnumerateDirectories(@"Z:\file-share");

static void EnumerateDirectories(string path)
{
    try
    {
        List<string> dirs = new List<string>(Directory.EnumerateDirectories(path));

        foreach (var dir in dirs)
        {
            Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
        }
        Console.WriteLine($"{dirs.Count} directories found.");
    }
    catch (UnauthorizedAccessException ex)
    {
        Console.WriteLine(ex.Message);
    }
    catch (PathTooLongException ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Przykład: zapisywanie w pliku w udziale plików przy użyciu System.IO

W poniższym przykładzie kodu pokazano, jak napisać i dołączyć tekst z klasą File :

using System.IO;

string fileSharePath = @"Z:\file-share";

WriteToFile(fileSharePath, "test.txt");

static void WriteToFile(string fileSharePath, string fileName)
{
    string textToWrite = "First line" + Environment.NewLine;
    string filePath = Path.Combine(fileSharePath, fileName);
    
    File.WriteAllText(filePath, textToWrite);

    string[] textToAppend = { "Second line", "Third line" };
    File.AppendAllLines(filePath, textToAppend);
}

Przykład: blokowanie pliku w udziale plików przy użyciu System.IO

Klienci SMB, którzy podłączają udziały plików, mogą używać mechanizmów blokowania systemu plików do zarządzania dostępem do udostępnionych plików.

Poniższy przykład kodu pokazuje, jak zablokować plik w udziale plików z trybem udostępniania ustawionym na None. Ten tryb udostępniania odrzuca udostępnianie bieżącego pliku do momentu zamknięcia pliku.

using System.IO;

string fileSharePath = @"Z:\file-share";

LockFile(Path.Combine(fileSharePath, "test.txt"));

static void LockFile(string filePath)
{
    try
    {
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
        {
            Console.WriteLine("File locked.");

            // Do something with file, press Enter to close the stream and release the lock
            Console.ReadLine();

            fs.Close();
            Console.WriteLine("File closed.");
        }
    }
    catch (IOException ex)
    {
        Console.WriteLine(ex.Message);
    }
}

W przypadku korzystania zarówno z protokołu SMB, jak i interfejsu API FileREST należy pamiętać, że interfejs API FileREST używa dzierżaw do zarządzania blokadami plików, podczas gdy protokół SMB używa blokad systemu plików zarządzanych przez system operacyjny. Aby dowiedzieć się więcej na temat zarządzania interakcjami blokowania plików między protokółem SMB i interfejsem API FileREST, zobacz Zarządzanie blokadami plików.

Przykład: wyliczanie list ACL plików za pomocą System.IO

Poniższy przykład kodu przedstawia sposób wyliczania list kontroli dostępu (ACL) dla pliku:

using System.IO;
using System.Security.AccessControl;

string fileSharePath = @"Z:\file-share";
string fileName = "test.txt";
string filePath = Path.Combine(fileSharePath, fileName);

EnumerateFileACLs(filePath);

static void EnumerateFileACLs(string filePath)
{
    FileInfo fileInfo = new FileInfo(filePath);

    // For directories, use DirectorySecurity instead of FileSecurity
    FileSecurity fSecurity = FileSystemAclExtensions.GetAccessControl(fileInfo);

    // List all access rules for the file
    foreach (FileSystemAccessRule rule in fSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
    {
        Console.WriteLine($"Identity: {rule.IdentityReference.Value}");
        Console.WriteLine($"Access Control Type: {rule.AccessControlType}");
        Console.WriteLine($"File System Rights: {rule.FileSystemRights}");
        Console.WriteLine();
    }

}

Praca z danymi Azure Files przy użyciu biblioteki klienta do zasobów plików na platformie .NET

Interfejs API FileREST zapewnia dostęp programowy do usługi Azure Files. Umożliwia wywoływanie punktów końcowych HTTPS w celu wykonywania operacji na udostępnionych zasobach plików, katalogach i plikach. Interfejs API FileREST został zaprojektowany z myślą o wysokiej skalowalności i zaawansowanych funkcjach, które mogą nie być dostępne za pośrednictwem protokołów natywnych. Zestaw Azure SDK udostępnia biblioteki klienckie, takie jak biblioteka klienta udziałów plików dla platformy .NET, które są oparte na interfejsie API FileREST.

Rozważ użycie interfejsu API FileREST i biblioteki klienta dysku sieciowego, jeśli aplikacja wymaga:

  • Funkcje zaawansowane: Operacje dostępu i funkcje, które nie są dostępne za pośrednictwem protokołów natywnych.
  • Niestandardowe integracje z chmurą: Twórz niestandardowe usługi dodane do wartości, takie jak tworzenie kopii zapasowych, ochrony antywirusowej lub zarządzanie danymi, które współdziałają bezpośrednio z usługą Azure Files.
  • Optymalizacja wydajności: Skorzystaj z zalet wydajności w scenariuszach o dużej skali przy użyciu operacji płaszczyzny danych.

Interfejs API FileREST modeluje usługę Azure Files jako hierarchię zasobów i jest zalecany w przypadku operacji wykonywanych na poziomie katalogu lub pliku . Powinieneś preferować interfejs API REST dostawcy zasobów usługi Storage dla operacji wykonywanych na poziomie usługi plików lub udziału plików.

W tej sekcji dowiesz się, jak używać biblioteki klienta Azure Files do pracy z zasobami usługi Azure Files.

Więcej informacji i przykładów zawierają następujące zasoby:

Autoryzowanie dostępu i tworzenie klienta

Aby połączyć aplikację z usługą ShareClient Azure Files, utwórz obiekt. Ten obiekt jest punktem wyjścia do pracy z zasobami usługi Azure Files. W poniższych przykładach kodu pokazano, jak utworzyć ShareClient obiekt przy użyciu różnych mechanizmów autoryzacji.

Aby autoryzować za pomocą Microsoft Entra ID, musisz użyć podmiotu zabezpieczeń. Typ wymaganego podmiotu zabezpieczeń zależy od tego, gdzie działa aplikacja. Użyj tej tabeli jako przewodnika.

Gdzie działa aplikacja Podmiot bezpieczeństwa Wskazówki
Maszyna lokalna (programowanie i testowanie) Podmiot usługi Aby dowiedzieć się, jak zarejestrować aplikację, skonfigurować grupę firmy Microsoft Entra, przypisać role i skonfigurować zmienne środowiskowe, zobacz Autoryzowanie dostępu przy użyciu jednostek usługi dewelopera
Maszyna lokalna (programowanie i testowanie) Tożsamość użytkownika Aby dowiedzieć się, jak skonfigurować grupę firmy Microsoft Entra, przypisać role i zalogować się na platformie Azure, zobacz Autoryzowanie dostępu przy użyciu poświadczeń dewelopera
Hostowane na platformie Azure Tożsamość zarządzana Aby dowiedzieć się, jak włączyć tożsamość zarządzaną i przypisać role, zobacz Autoryzowanie dostępu z aplikacji hostowanych na platformie Azure przy użyciu tożsamości zarządzanej
Hostowane poza platformą Azure (na przykład aplikacje lokalne) Podmiot usługi Aby dowiedzieć się, jak zarejestrować aplikację, przypisać role i skonfigurować zmienne środowiskowe, zobacz Autoryzowanie dostępu z aplikacji lokalnych przy użyciu jednostki usługi aplikacji

Aby pracować z przykładami kodu w tym artykule, przypisz wbudowaną rolę RBAC Uprzywilejowany współautor danych plików magazynu do podmiotu zabezpieczeń. Ta rola zapewnia pełny dostęp do odczytu, zapisu, modyfikowania list kontrolnych dostępu oraz usuwania danych we wszystkich udziałach dla skonfigurowanych kont magazynowych, niezależnie od uprawnień NTFS ustawionych na poziomie pliku lub katalogu. Aby uzyskać więcej informacji, zobacz Access Azure file shares using Microsoft Entra ID with Azure Files OAuth over REST (Uzyskiwanie dostępu do udziałów plików platformy Azure przy użyciu identyfikatora Entra firmy Microsoft za pomocą protokołu OAuth usługi Azure Files za pośrednictwem interfejsu REST).

Autoryzowanie dostępu za pomocą DefaultAzureCredential

Łatwym i bezpiecznym sposobem autoryzowania dostępu i nawiązywania połączenia z usługą Azure Files jest uzyskanie tokenu OAuth przez utworzenie wystąpienia DefaultAzureCredential . Następnie możesz użyć tego poświadczenia, aby utworzyć ShareClient obiekt.

Poniższy przykład tworzy obiekt ShareClient autoryzowany przy użyciu DefaultAzureCredential, a następnie tworzy obiekt ShareDirectoryClient do pracy z katalogiem w zasobie udostępnionym:

using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

// ...

string accountName = "<account-name>";
string shareName = "<share-name>";

ShareClientOptions options = new()
{
    AllowSourceTrailingDot = true,
    AllowTrailingDot = true,
    ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareClient shareClient = new(
   new Uri($"https://{accountName}.file.core.windows.net/{shareName}"),
   new DefaultAzureCredential(),
   options);

ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient("sample-directory");

Jeśli wiesz dokładnie, którego typu poświadczeń używasz do uwierzytelniania użytkowników, możesz uzyskać token OAuth przy użyciu innych klas w bibliotece klienta tożsamości platformy Azure dla platformy .NET. Te klasy pochodzą z klasy TokenCredential .

Aby dowiedzieć się więcej na temat każdego z tych mechanizmów autoryzacji, zobacz Wybieranie sposobu autoryzowania dostępu do danych plików.

Przykład: kopiowanie plików z użyciem biblioteki klienta do współdzielenia plików

Pliki w udziale plików lub między udziałami plików można skopiować przy użyciu następującej metody:

Plik można skopiować przy użyciu następującej metody z obiektu BlobClient do docelowego obiektu blob.

W poniższym przykładzie kodu pokazano, jak skopiować plik do pliku w innym udziale plików:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

string accountName = "<account-name>";
string srcShareName = "src-file-share";
string destShareName = "dest-file-share";
string srcFilePath = "src/path/to/file";
string destFilePath = "dest/path/to/file";

TokenCredential tokenCredential = new DefaultAzureCredential();

ShareClientOptions options = new()
{
    ShareTokenIntent = ShareTokenIntent.Backup,
};

ShareFileClient srcShareFileClient = new(
    new Uri($"https://{accountName}.file.core.windows.net/{srcShareName}/{srcFilePath}"),
    tokenCredential,
    options);

ShareFileClient destShareFileClient = new(
    new Uri($"https://{accountName}.file.core.windows.net/{destShareName}/{destFilePath}"),
    tokenCredential,
    options);

// Copy the file from the source share to the destination share

await destShareFileClient.StartCopyAsync(srcShareFileClient.Uri);

Przykład: dzierżawa pliku przy użyciu biblioteki klienta udostępniania plików

Dzierżawa tworzy blokadę pliku zarządzanego przez platformę Azure za pośrednictwem identyfikatora dzierżawy. Dzierżawa zapewnia mechanizm koordynowania dostępu do plików między wieloma klientami w systemie rozproszonym. Dzierżawa pliku zapewnia wyłączny dostęp do zapisu i usuwania. Aby dowiedzieć się więcej o stanach dzierżawy i akcjach, zobacz Plik dzierżawy.

Poniższy przykład kodu pokazuje, jak utworzyć klienta najmu, uzyskać nieskończony czas trwania najmu na plik i zwolnić najem.

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
using Azure.Storage.Files.Shares.Specialized;

string accountName = "<account-name>";
string shareName = "sample-file-share";
string filePath = "path/to/file";

TokenCredential tokenCredential = new DefaultAzureCredential();

ShareClientOptions options = new()
{
    ShareTokenIntent = ShareTokenIntent.Backup,
};

ShareFileClient fileClient = new(
    new Uri($"https://{accountName}.file.core.windows.net/{shareName}/{filePath}"),
    tokenCredential,
    options);

ShareLeaseClient leaseClient = fileClient.GetShareLeaseClient();

// Acquire a lease on the source file
await leaseClient.AcquireAsync(duration: ShareLeaseClient.InfiniteLeaseDuration);

// Do something with the file

// Release the lease
await leaseClient.ReleaseAsync();

W przypadku korzystania zarówno z protokołu SMB, jak i interfejsu API FileREST należy pamiętać, że interfejs API FileREST używa dzierżaw do zarządzania blokadami plików, podczas gdy protokół SMB używa blokad systemu plików zarządzanych przez system operacyjny. Aby dowiedzieć się więcej na temat zarządzania interakcjami blokowania plików między protokółem SMB i interfejsem API FileREST, zobacz Zarządzanie blokadami plików.

Przykład: Tworzenie i wyświetlanie listy migawek współdzielonych zasobów przy użyciu biblioteki klienta współdzielonych zasobów plikowych.

Migawki udziałów plików to kopie tylko do odczytu danej wersji udziału plików w określonym momencie. Możesz utworzyć migawkę udziału plików, a następnie użyć tej migawki, aby uzyskać dostęp do danych w udziale w chwili jej utworzenia. Można również wyświetlić listę wszystkich migawek w udziale plików i usunąć migawki udziałów.

Poniższy przykład kodu pokazuje, jak utworzyć migawkę udziału, wyświetlić listę migawek udziału plików oraz przejść przez drzewo katalogów w migawce udziału.

using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

string connectionString = "<connection-string>";

ShareServiceClient shareServiceClient = new ShareServiceClient(connectionString);
ShareClient shareClient = shareServiceClient.GetShareClient("sample-file-share");

// Create a snapshot

ShareSnapshotInfo snapshotInfo = await shareClient.CreateSnapshotAsync();
Console.WriteLine($"Snapshot created: {snapshotInfo.Snapshot}");

// List snapshots in a share

await foreach (ShareItem shareItem in shareServiceClient.GetSharesAsync(ShareTraits.All, ShareStates.Snapshots))
{
    if (shareItem.Snapshot != null)
    {
        Console.WriteLine($"Share: {shareItem.Name} (Snapshot: {shareItem.Snapshot})");
    }
}

// List directories and files in a share snapshot

string snapshotTimestamp = snapshotInfo.Snapshot.ToString();
ShareClient shareSnapshot = shareClient.WithSnapshot(snapshotTimestamp);
ShareDirectoryClient rootDir = shareSnapshot.GetRootDirectoryClient();

await ListDirectoryTreeAsync(rootDir);

static async Task ListDirectoryTreeAsync(ShareDirectoryClient directory)
{
    await foreach (ShareFileItem fileItem in directory.GetFilesAndDirectoriesAsync())
    {
        if (fileItem.IsDirectory)
        {
            Console.WriteLine($"Directory: {fileItem.Name}");
            await ListDirectoryTreeAsync(directory.GetSubdirectoryClient(fileItem.Name));
        }
        else
        {
            Console.WriteLine($"File: {fileItem.Name}");
        }
    }
}

Uwaga

Tokeny OAuth, takie jak te uzyskane podczas korzystania z DefaultAzureCredential, nie są dozwolone do operacji na płaszczyźnie danych na poziomie zasobu współdzielenia plików. Aby pracować z migawkami udziałów, obiekt klienta musi być autoryzowany za pomocą klucza konta. Obiekt ShareClient utworzony w tym przykładzie kodu używa parametrów połączenia, które zawierają klucz konta.

Przechowywanie kluczy konta lub parametrów połączenia stanowi zagrożenie bezpieczeństwa. Należy ich używać tylko wtedy, gdy uwierzytelnianie microsoft Entra nie jest dostępne. Aby dowiedzieć się więcej na temat bezpiecznego przechowywania kluczy kont w usłudze Azure Key Vault, zobacz About Azure Key Vault managed storage account keys (Informacje o kluczach konta zarządzanego magazynu usługi Azure Key Vault).

Zarządzanie zasobami usługi Azure Files przy użyciu bibliotek zarządzania usługi Azure Storage

Biblioteki zarządzania usługi Azure Storage są oparte na interfejsie API REST dostawcy zasobów usługi Azure Storage. Dostawca zasobów usługi Azure Storage jest usługą opartą na usłudze Azure Resource Manager i obsługuje metody deklaratywne (szablony) i imperatywne (bezpośrednie wywołanie interfejsu API). Interfejs API REST dostawcy zasobów usługi Azure Storage zapewnia programowy dostęp do zasobów usługi Azure Storage, w tym udziałów plików. Zestaw Azure SDK udostępnia biblioteki zarządzania oparte na interfejsie API REST dostawcy zasobów usługi Azure Storage.

Biblioteki zarządzania są zalecane w przypadku operacji wykonywanych na poziomie usługi plików lub udziału plików . W tej sekcji dowiesz się, jak zarządzać zasobami usługi Azure Files przy użyciu bibliotek zarządzania usługi Azure Storage.

Przykład: tworzenie udziału plików przy użyciu biblioteki zarządzania Azure Storage

W poniższym przykładzie kodu pokazano, jak utworzyć obiekt najwyższego poziomu ArmClient, zarejestrować dostawcę zasobów usługi Storage do subskrypcji oraz utworzyć udział plików przy użyciu biblioteki do zarządzania Azure Storage.

using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;

ArmClient armClient = new ArmClient(new DefaultAzureCredential());

// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/<subscription-id>");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);

ResourceProviderResource resourceProvider =
    await subscription.GetResourceProviderAsync("Microsoft.Storage");

// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
    resourceProvider.Register();

// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync("<resource-group-name>");

// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();

// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync("<storage-account-name>");

// Get a file service resource for the storage account
FileServiceResource fileService = storageAccount.GetFileService();

// Create a new file share (or update if it already exists)
ArmOperation <FileShareResource> fileShareOperation = await fileService
    .GetFileShares()
    .CreateOrUpdateAsync(WaitUntil.Completed, "sample-file-share", new FileShareData()
    {
        ShareQuota = 1024,
        // Add file share properties here
    });

// Get the file share resource
FileShareResource fileShare = fileShareOperation.Value;

Właściwości udziału plików można skonfigurować przy użyciu klasy FileShareData . Poprzedni przykład pokazuje, jak ustawić właściwość ShareQuota.

Uwaga

Aby wykonać operację rejestrowania, musisz mieć uprawnienia do następującej akcji RBAC platformy Azure: Microsoft.Storage/register/action. To uprawnienie jest uwzględnione w wbudowanych rolach Współautora i Właściciela.

Przykład: Wyświetlanie listy udziałów plików i migawek przy użyciu biblioteki zarządzania usługi Azure Storage

Poniższy przykład kodu pokazuje, jak wyświetlić listę udostępnionych zasobów plików i migawek na koncie magazynu.

// Iterate over a collection of file shares and list them along with any snapshots
string expand = "snapshots";
await foreach (FileShareResource shareResource in fileService.GetFileShares().GetAllAsync(expand: expand))
{
    // Call operations on the file share resource

    // For this demo, print out the resource name and snapshot information
    FileShareData resourceData = shareResource.Data;
    Console.WriteLine($"Resource name: {resourceData.Name}");
    if (resourceData.SnapshotOn.HasValue)
    {
        Console.WriteLine($"Snapshot: {resourceData.SnapshotOn}");
    }
}

Aby uzyskać więcej informacji o programowaniu za pomocą usługi Azure Files, zobacz następujące zasoby: