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

W tym samouczku przedstawiono podstawy korzystania z platformy .NET do tworzenia aplikacji, które korzystają z usługi Azure Files do przechowywania danych plików.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. W tym samouczku przedstawiono prostą aplikację konsolową do wykonywania podstawowych akcji przy użyciu platformy .NET i Azure Files:This tutorial creates a simple console application to do basic actions with .NET and Azure Files:

  • Pobierz zawartość pliku.Get the contents of a file.
  • Ustaw maksymalny rozmiar lub przydział udziału plików.Set the maximum size or quota for the file share.
  • Utwórz sygnaturę dostępu współdzielonego (klucz SAS) dla pliku, który korzysta z przechowywanych zasad dostępu zdefiniowanych w udziale.Create a shared access signature (SAS key) for a file that uses a stored access policy defined on the share.
  • Skopiowanie pliku do innego pliku w tym samym koncie magazynu.Copy a file to another file in the same storage account.
  • Skopiowanie pliku do obiektu blob w tym samym koncie magazynu.Copy a file to a blob in the same storage account.
  • Skorzystaj z metryk usługi Azure Storage w celu rozwiązywania problemów.Use Azure Storage Metrics for troubleshooting.

Aby dowiedzieć się więcej na temat Azure Files, zobacz co to jest Azure Files?To learn more about Azure Files, see What is Azure Files?

Porada

Zapoznaj się z repozytorium przykładów kodu usługi Azure StorageCheck out the Azure Storage code samples repository

Nasza lista przykładów usługi Azure Storage zawiera łatwe w użyciu kompleksowe przykłady kodu usługi Azure Storage, które można pobierać i uruchamiać.For easy-to-use end-to-end Azure Storage code samples that you can download and run, please check out our list of Azure Storage Samples.

Opis interfejsów API platformy .NETUnderstanding the .NET APIs

Usługa Azure Files oferuje dwa obszerne podejścia do aplikacji klienckich: blok komunikatów serwera (SMB) i interfejs REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. W programie .NET System.IO WindowsAzure.Storage interfejsy API i są abstrakcyjne.Within .NET, the System.IO and WindowsAzure.Storage APIs abstract these approaches.

Interfejs APIAPI Kiedy stosowaćWhen to use UwagiNotes
System.IOSystem.IO Twoja aplikacja:Your application:
  • Wymaga odczytu/zapisu plików przy użyciu protokołu SMBNeeds to read/write files by using SMB
  • Działa na urządzeniu, które ma dostęp do konta usługi Azure Files za pośrednictwem portu 445Is running on a device that has access over port 445 to your Azure Files account
  • Nie musi zarządzać żadnymi ustawieniami administracyjnymi udziału plikówDoesn't need to manage any of the administrative settings of the file share
We/wy plików wdrożonych przy użyciu Azure Files za pośrednictwem protokołu SMB zwykle jest taka sama jak we/wy z dowolnym sieciowym udziałem plików lub lokalnym urządzeniem magazynującym.File I/O implemented with Azure Files over SMB is generally the same as I/O with any network file share or local storage device. Aby zapoznać się z wprowadzeniem do wielu funkcji platformy .NET, w tym plików we/wy, zobacz Samouczek dotyczący aplikacji konsolowej .For an introduction to a number of features in .NET, including file I/O, see the Console Application tutorial.
Microsoft. Azure. Storage. FileMicrosoft.Azure.Storage.File Twoja aplikacja:Your application:
  • Nie można uzyskać dostępu do Azure Files przy użyciu protokołu SMB na porcie 445 z powodu ograniczeń zapory lub usługodawcy internetowegoCan't access Azure Files by using SMB on port 445 because of firewall or ISP constraints
  • Wymaga funkcji administracyjnych, takich jak możliwość ustawiania przydziału udziału plików lub tworzenia sygnatury dostępu współdzielonegoRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
W tym artykule przedstawiono sposób użycia Microsoft.Azure.Storage.File funkcji we/wy na plikach przy użyciu protokołu REST zamiast SMB i zarządzania udziałem plików.This article demonstrates the use of Microsoft.Azure.Storage.File for file I/O using REST instead of SMB and management of the file share.

Tworzenie aplikacji konsolowej i uzyskiwanie zestawuCreate the console application and obtain the assembly

W programie Visual Studio utwórz nową aplikację konsoli dla systemu Windows.In Visual Studio, create a new Windows console application. Poniższe kroki pokazują, jak utworzyć aplikację konsolową w programie Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. Procedura jest podobna w innych wersjach programu Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.Start Visual Studio and select Create a new project.
  2. W obszarze Utwórz nowy projektwybierz pozycję aplikacja konsoli (.NET Framework) dla języka C#, a następnie wybierz pozycję dalej.In Create a new project, choose Console App (.NET Framework) for C#, and then select Next.
  3. W obszarze Konfigurowanie nowego projektuwprowadź nazwę aplikacji, a następnie wybierz pozycję Utwórz.In Configure your new project, enter a name for the app, and select Create.

Wszystkie przykłady kodu w tym samouczku można dodać do Main() metody pliku aplikacji konsolowej Program.cs .You can add all the code examples in this tutorial to the Main() method of your console application's Program.cs file.

Biblioteka klienta usługi Azure Storage może być używana w dowolnym typie aplikacji .NET.You can use the Azure Storage client library in any type of .NET application. Te typy obejmują usługę w chmurze lub aplikację sieci Web platformy Azure oraz aplikacje dla komputerów stacjonarnych i mobilnych.These types include an Azure cloud service or web app, and desktop and mobile applications. W tym przewodniku dla uproszczenia przedstawiono aplikację konsolową.In this guide, we use a console application for simplicity.

Użycie pakietu NuGet w celu zainstalowania wymaganych pakietówUse NuGet to install the required packages

Zapoznaj się z tymi pakietami w projekcie, aby ukończyć ten samouczek:Refer to these packages in your project to complete this tutorial:

Pakiet NuGet służy do pobrania obu pakietów.You can use NuGet to obtain both packages. Wykonaj następujące kroki:Follow these steps:

  1. W Eksplorator rozwiązańkliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet.In Solution Explorer, right-click your project and choose Manage NuGet Packages.

  2. W Menedżerze pakietów NuGetwybierz pozycję Przeglądaj.In NuGet Package Manager, select Browse. Następnie wyszukaj i wybierz pozycję Microsoft. Azure. Storage. blob, a następnie wybierz pozycję Zainstaluj.Then search for and choose Microsoft.Azure.Storage.Blob, and then select Install.

    Ten krok powoduje zainstalowanie pakietu wraz z jego zależnościami.This step installs the package and its dependencies.

  3. Wyszukaj i Zainstaluj następujące pakiety:Search for and install these packages:

    • Microsoft. Azure. Storage. CommonMicrosoft.Azure.Storage.Common
    • Microsoft. Azure. Storage. FileMicrosoft.Azure.Storage.File
    • Microsoft.Azure.ConfigurationManagerMicrosoft.Azure.ConfigurationManager

Zapisz poświadczenia konta magazynu w pliku App.configSave your storage account credentials to the App.config file

Następnie Zapisz poświadczenia w App.config pliku projektu.Next, save your credentials in your project's App.config file. W Eksplorator rozwiązańkliknij dwukrotnie App.config plik i zmodyfikuj go tak, aby był podobny do poniższego przykładu.In Solution Explorer, double-click App.config and edit the file so that it is similar to the following example. Zastąp ciąg myaccount nazwą konta magazynu i mykey kluczem konta magazynu.Replace myaccount with your storage account name and mykey with your storage account key.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=StorageAccountKeyEndingIn==" />
    </appSettings>
</configuration>

Uwaga

Najnowsze wersje emulatora usługi Azure Storage i emulatora typu open source azurite nie obsługują Azure Files. Aby można było pracować z usługą Azure Files, parametry połączenia muszą wskazywać konto usługi Azure Storage w chmurze.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Dodawanie dyrektyw usingAdd using directives

W Eksplorator rozwiązańOtwórz Program.cs plik i Dodaj następujące dyrektywy using na początku pliku.In Solution Explorer, open the Program.cs file, and add the following using directives to the top of the file.

using Microsoft.Azure; // Namespace for Azure Configuration Manager
using Microsoft.Azure.Storage; // Namespace for Storage Client Library
using Microsoft.Azure.Storage.Blob; // Namespace for Azure Blobs
using Microsoft.Azure.Storage.File; // Namespace for Azure Files

Biblioteka programu Microsoft Azure Configuration Manager dla platformy .NET zawiera klasę do analizowania parametrów połączenia w pliku konfiguracji.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. Klasa CloudConfigurationManager analizuje ustawienia konfiguracji.The CloudConfigurationManager class parses configuration settings. Analizuje on ustawienia aplikacji klienckich uruchamianych na pulpicie, na urządzeniu przenośnym, na maszynie wirtualnej platformy Azure lub w usłudze w chmurze platformy Azure.It parses settings for client applications that run on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Aby odwołać się do CloudConfigurationManager pakietu, Dodaj następujące using dyrektywy:To reference the CloudConfigurationManager package, add the following using directives:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

Oto przykład, w którym przedstawiono, jak pobrać parametry połączenia z pliku konfiguracji:Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

Użycie programu Azure Configuration Manager jest opcjonalne.Using the Azure Configuration Manager is optional. Można również użyć interfejsu API, takiego jak Klasa configurationmanager.NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Programowy dostęp do udziału plikówAccess the file share programmatically

Następnie Dodaj poniższą zawartość do Main() metody po kodzie pokazanym powyżej, aby pobrać parametry połączenia.Next, add the following content to the Main() method, after the code shown above, to retrieve the connection string. Ten kod pobiera odwołanie do utworzonego wcześniej pliku i wyświetla jego zawartość.This code gets a reference to the file we created earlier and outputs its contents.

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile file = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the file exists.
        if (file.Exists())
        {
            // Write the contents of the file to the console window.
            Console.WriteLine(file.DownloadTextAsync().Result);
        }
    }
}

Aby zobaczyć dane wyjściowe, uruchom aplikację konsolową.Run the console application to see the output.

Ustawianie maksymalnego rozmiaru udziału plikówSet the maximum size for a file share

Począwszy od wersji 5. x biblioteki klienta usługi Azure Storage, można ustawić limit przydziału (maksymalny rozmiar) udziału plików.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (maximum size) for a file share. Można również sprawdzić, ile danych jest obecnie przechowywanych w udziale.You can also check to see how much data is currently stored on the share.

Ustawienie limitu przydziału udziału ogranicza łączny rozmiar plików przechowywanych w udziale.Setting the quota for a share limits the total size of the files stored on the share. Jeśli łączny rozmiar plików w udziale przekracza limit przydziału ustawiony w udziale, klienci nie mogą zwiększyć rozmiaru istniejących plików.If the total size of files on the share exceeds the quota set on the share, clients can't increase the size of existing files. Klienci nie mogą tworzyć nowych plików, chyba że te pliki są puste.Clients can't create new files, unless those files are empty.

W poniższym przykładzie pokazano, jak sprawdzić bieżące użycie udziału oraz jak ustawić limit przydziału w udziale.The example below shows how to check the current usage for a share and how to set the quota for the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Check current usage stats for the share.
    // Note that the ShareStats object is part of the protocol layer for the File service.
    Microsoft.Azure.Storage.File.Protocol.ShareStats stats = share.GetStats();
    Console.WriteLine("Current share usage: {0} GB", stats.Usage.ToString());

    // Specify the maximum size of the share, in GB.
    // This line sets the quota to be 10 GB greater than the current usage of the share.
    share.Properties.Quota = 10 + stats.Usage;
    share.SetProperties();

    // Now check the quota for the share. Call FetchAttributes() to populate the share's properties.
    share.FetchAttributes();
    Console.WriteLine("Current share quota: {0} GB", share.Properties.Quota);
}

Generowanie sygnatury dostępu współdzielonego dla pliku lub udziału plikówGenerate a shared access signature for a file or file share

Począwszy od wersji 5.x biblioteki klienta usługi Azure Storage, można wygenerować sygnaturę dostępu współdzielonego dla udziału plików lub dla pojedynczego pliku.Beginning with version 5.x of the Azure Storage Client Library, you can generate a shared access signature (SAS) for a file share or for an individual file. Możesz również utworzyć przechowywane zasady dostępu w udziale plików, aby zarządzać sygnaturami dostępu współdzielonego.You can also create a stored access policy on a file share to manage shared access signatures. Zaleca się utworzenie zasad dostępu przechowywanego, ponieważ umożliwia odwoływanie skojarzeń zabezpieczeń w przypadku naruszenia zabezpieczeń.We recommend creating a stored access policy because it lets you revoke the SAS if it becomes compromised.

Poniższy przykład tworzy zasady dostępu przechowywanego w udziale.The following example creates a stored access policy on a share. W przykładzie zastosowano te zasady, aby zapewnić ograniczenia dla sygnatury dostępu współdzielonego dla pliku w udziale.The example uses that policy to provide the constraints for a SAS on a file in the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    string policyName = "sampleSharePolicy" + DateTime.UtcNow.Ticks;

    // Create a new stored access policy and define its constraints.
    SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy()
        {
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write
        };

    // Get existing permissions for the share.
    FileSharePermissions permissions = share.GetPermissions();

    // Add the stored access policy to the share's policies. Note that each policy must have a unique name.
    permissions.SharedAccessPolicies.Add(policyName, sharedPolicy);
    share.SetPermissions(permissions);

    // Generate a SAS for a file in the share and associate this access policy with it.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");
    CloudFile file = sampleDir.GetFileReference("Log1.txt");
    string sasToken = file.GetSharedAccessSignature(null, policyName);
    Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken);

    // Create a new CloudFile object from the SAS, and write some text to the file.
    CloudFile fileSas = new CloudFile(fileSasUri);
    fileSas.UploadText("This write operation is authorized via SAS.");
    Console.WriteLine(fileSas.DownloadText());
}

Aby uzyskać więcej informacji na temat tworzenia i używania sygnatur dostępu współdzielonego, zobacz jak działa sygnatura dostępu współdzielonego.For more information about creating and using shared access signatures, see How a shared access signature works.

Kopiowanie plikówCopy files

Począwszy od wersji 5.x biblioteki klienta usługi Azure Storage, można kopiować pliki do innych plików, pliki do obiektów blob oraz obiekty blob do plików.Beginning with version 5.x of the Azure Storage Client Library, you can copy a file to another file, a file to a blob, or a blob to a file. W następnych sekcjach pokazano, jak programowo wykonać te operacje kopiowania.In the next sections, we demonstrate how to do these copy operations programmatically.

Można również użyć AzCopy do kopiowania jednego pliku do innego lub kopiowania obiektu BLOB do pliku lub w inny sposób.You can also use AzCopy to copy one file to another or to copy a blob to a file or the other way around. Zobacz Rozpoczynanie pracy z usługą AzCopy.See Get started with AzCopy.

Uwaga

W przypadku kopiowania obiektu blob do pliku lub pliku do obiektu blob konieczne jest autoryzowanie dostępu do obiektu źródłowego za pomocą sygnatury dostępu współdzielonego, nawet jeśli kopiowanie odbywa się w ramach tego samego konta magazynu.If you are copying a blob to a file, or a file to a blob, you must use a shared access signature (SAS) to authorize access to the source object, even if you are copying within the same storage account.

Kopiowanie pliku do innego plikuCopy a file to another file

Poniższy przykładowy kod kopiuje plik do innego pliku w tym samym udziale.The following example copies a file to another file in the same share. Ponieważ ta operacja kopiowania Kopiuje między plikami na tym samym koncie magazynu, można użyć uwierzytelniania klucza współużytkowanego do wykonania kopii.Because this copy operation copies between files in the same storage account, you can use Shared Key authentication to do the copy.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile sourceFile = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the source file exists.
        if (sourceFile.Exists())
        {
            // Get a reference to the destination file.
            CloudFile destFile = sampleDir.GetFileReference("Log1Copy.txt");

            // Start the copy operation.
            destFile.StartCopy(sourceFile);

            // Write the contents of the destination file to the console window.
            Console.WriteLine(destFile.DownloadText());
        }
    }
}

Kopiowanie pliku do obiektu blobCopy a file to a blob

Poniższy przykładowy kod tworzy plik i kopiuje go do obiektu blob w ramach tego samego konta magazynu.The following example creates a file and copies it to a blob within the same storage account. Dla pliku źródłowego tworzona jest sygnatura dostępu współdzielonego, za pomocą której usługa autoryzuje dostęp do tego pliku podczas operacji kopiowania.The example creates a SAS for the source file, which the service uses to authorize access to the source file during the copy operation.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Create a new file share, if it does not already exist.
CloudFileShare share = fileClient.GetShareReference("sample-share");
share.CreateIfNotExists();

// Create a new file in the root directory.
CloudFile sourceFile = share.GetRootDirectoryReference().GetFileReference("sample-file.txt");
sourceFile.UploadText("A sample file in the root directory.");

// Get a reference to the blob to which the file will be copied.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("sample-container");
container.CreateIfNotExists();
CloudBlockBlob destBlob = container.GetBlockBlobReference("sample-blob.txt");

// Create a SAS for the file that's valid for 24 hours.
// Note that when you are copying a file to a blob, or a blob to a file, you must use a SAS
// to authorize access to the source object, even if you are copying within the same
// storage account.
string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
    // Only read permissions are required for the source file.
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});

// Construct the URI to the source file, including the SAS token.
Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);

// Copy the file to the blob.
destBlob.StartCopy(fileSasUri);

// Write the contents of the file to the console window.
Console.WriteLine("Source file contents: {0}", sourceFile.DownloadText());
Console.WriteLine("Destination blob contents: {0}", destBlob.DownloadText());

W ten sam sposób można skopiować obiekt blob do pliku.You can copy a blob to a file in the same way. Jeśli obiekt źródłowy jest obiektem blob, utwórz sygnaturę dostępu współdzielonego w celu autoryzacji dostępu do tego obiektu blob podczas operacji kopiowania.If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

Migawki udziałówShare snapshots

Od wersji 8.5 biblioteki klienta usługi Azure Storage można tworzyć migawki udziałów.Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. Można również wyświetlać listę migawek udziałów oraz je przeglądać i usuwać.You can also list or browse share snapshots and delete share snapshots. Migawki udziałów są przeznaczone tylko do odczytu, nie można w ich obrębie wykonywać żadnych operacji zapisu.Share snapshots are read-only so no write operations are allowed on share snapshots.

Tworzenie migawek udziałówCreate share snapshots

W poniższym przykładzie przedstawiono sposób tworzenia migawki udziału plików.The following example creates a file share snapshot.

storageAccount = CloudStorageAccount.Parse(ConnectionString); 
fClient = storageAccount.CreateCloudFileClient(); 
string baseShareName = "myazurefileshare"; 
CloudFileShare myShare = fClient.GetShareReference(baseShareName); 
var snapshotShare = myShare.Snapshot();

Wyświetlanie listy migawek udziałówList share snapshots

W poniższym przykładzie przedstawiono sposób wyświetlania listy migawek udziałów w udziale.The following example lists the share snapshots on a share.

var shares = fClient.ListShares(baseShareName, ShareListingDetails.All);

Przeglądanie plików i katalogów w obrębie migawek udziałówBrowse files and directories within share snapshots

W poniższym przykładzie przedstawiono sposób przeglądania plików i katalogów w ramach migawek udziałów.The following example browses files and directory within share snapshots.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); 
var rootDirectory = mySnapshot.GetRootDirectoryReference(); 
var items = rootDirectory.ListFilesAndDirectories();

Wyświetlanie listy udziałów i udziałów migawek oraz przywracanie udziałów plików lub plików z migawek udziałówList shares and share snapshots and restore file shares or files from share snapshots

Po utworzeniu migawki udziału plików można w przyszłości odzyskiwać poszczególne pliki lub cały udział plików.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

Aby przywrócić plik z migawki udziału plików, można utworzyć zapytanie o migawki udziałów w udziale plików.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Następnie można pobrać plik, który należy do określonej migawki udziału.You can then retrieve a file that belongs to a particular share snapshot. Użyj tej wersji do bezpośredniego odczytywania i porównywania lub przywracania.Use that version to either directly read and compare or to restore.

CloudFileShare liveShare = fClient.GetShareReference(baseShareName);
var rootDirOfliveShare = liveShare.GetRootDirectoryReference();
var dirInliveShare = rootDirOfliveShare.GetDirectoryReference(dirName);
var fileInliveShare = dirInliveShare.GetFileReference(fileName);

CloudFileShare snapshot = fClient.GetShareReference(baseShareName, snapshotTime);
var rootDirOfSnapshot = snapshot.GetRootDirectoryReference();
var dirInSnapshot = rootDirOfSnapshot.GetDirectoryReference(dirName);
var fileInSnapshot = dir1InSnapshot.GetFileReference(fileName);

string sasContainerToken = string.Empty;
SharedAccessFilePolicy sasConstraints = new SharedAccessFilePolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24);
sasConstraints.Permissions = SharedAccessFilePermissions.Read;

//Generate the shared access signature on the container, setting the constraints directly on the signature.
sasContainerToken = fileInSnapshot.GetSharedAccessSignature(sasConstraints);

string sourceUri = (fileInSnapshot.Uri.ToString() + sasContainerToken + "&" + fileInSnapshot.SnapshotTime.ToString()); ;
fileInliveShare.StartCopyAsync(new Uri(sourceUri));

Usuwanie migawek udziałówDelete share snapshots

W poniższym przykładzie przedstawiono sposób usuwania migawki udziału plików.The following example deletes a file share snapshot.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); mySnapshot.Delete(null, null, null);

Rozwiązywanie problemów z Azure Files przy użyciu metrykTroubleshoot Azure Files by using metrics

Funkcja analizy usługi Azure Storage obsługuje teraz metryki na potrzeby usługi Azure Files.Azure Storage Analytics now supports metrics for Azure Files. Dane metryk umożliwiają śledzenie żądań i diagnozowanie problemów.With metrics data, you can trace requests and diagnose issues.

Można włączyć metryki dla Azure Files z Azure Portal.You can enable metrics for Azure Files from the Azure portal. Można również programowo włączyć metryki, wywołując operację ustawiania właściwości usługi plików za pomocą interfejsu API REST lub jednego z jego analogek w bibliotece klienta usługi Storage.You can also enable metrics programmatically by calling the Set File Service Properties operation with the REST API or one of its analogs in the Storage Client Library.

Poniższy przykładowy kod pokazuje, jak włączyć metryki dla usługi Azure Files za pomocą biblioteki klienta usługi Storage programu .NET.The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

Najpierw Dodaj następujące using dyrektywy do Program.cs pliku wraz z tymi, które zostały dodane powyżej:First, add the following using directives to your Program.cs file, along with the ones you added above:

using Microsoft.Azure.Storage.File.Protocol;
using Microsoft.Azure.Storage.Shared.Protocol;

Chociaż obiekty blob platformy Azure, tabele platformy Azure i kolejki platformy Azure używają typu współużytkowanego ServiceProperties w Microsoft.Azure.Storage.Shared.Protocol przestrzeni nazw, Azure Files używa własnego typu, FileServiceProperties typu w Microsoft.Azure.Storage.File.Protocol przestrzeni nazw.Although Azure Blobs, Azure Tables, and Azure Queues use the shared ServiceProperties type in the Microsoft.Azure.Storage.Shared.Protocol namespace, Azure Files uses its own type, the FileServiceProperties type in the Microsoft.Azure.Storage.File.Protocol namespace. Należy jednak odwoływać się do obu przestrzeni nazw w kodzie, aby można było skompilować Poniższy kod.You must reference both namespaces from your code, however, for the following code to compile.

// Parse your storage connection string from your application's configuration file.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the File service client.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Set metrics properties for File service.
// Note that the File service currently uses its own service properties type,
// available in the Microsoft.Azure.Storage.File.Protocol namespace.
fileClient.SetServiceProperties(new FileServiceProperties()
{
    // Set hour metrics
    HourMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 14,
        Version = "1.0"
    },
    // Set minute metrics
    MinuteMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 7,
        Version = "1.0"
    }
});

// Read the metrics properties we just set.
FileServiceProperties serviceProperties = fileClient.GetServiceProperties();
Console.WriteLine("Hour metrics:");
Console.WriteLine(serviceProperties.HourMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.HourMetrics.RetentionDays);
Console.WriteLine(serviceProperties.HourMetrics.Version);
Console.WriteLine();
Console.WriteLine("Minute metrics:");
Console.WriteLine(serviceProperties.MinuteMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.MinuteMetrics.RetentionDays);
Console.WriteLine(serviceProperties.MinuteMetrics.Version);

Jeśli napotkasz jakiekolwiek problemy, możesz zapoznać się z tematem rozwiązywania problemów Azure Files problemów w systemie Windows.If you encounter any problems, you can refer to Troubleshoot Azure Files problems in Windows.

Następne krokiNext steps

Aby uzyskać więcej informacji na temat Azure Files, zobacz następujące zasoby:For more information about Azure Files, see the following resources:

Artykuły koncepcyjne i filmyConceptual articles and videos

Narzędzia dostępne dla usługi Magazyn plikówTooling support for File storage

DokumentacjaReference

Wpisy na blogachBlog posts