Entwickeln für Azure Files mit .NETDevelop for Azure Files with .NET

Dieses Tutorial veranschaulicht die grundlegende Verwendung von .NET bei der Entwicklung von Anwendungen, die Azure Files zum Speichern von Dateidaten verwenden.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. In diesem Tutorial wird eine einfache Konsolenanwendung erstellt, um grundlegende Aktionen mit .NET und Azure Files auszuführen:This tutorial creates a simple console application to do basic actions with .NET and Azure Files:

  • Abrufen der Inhalte einer DateiGet the contents of a file.
  • Festlegen der maximalen Größe oder des maximalen Kontingents für die DateifreigabeSet the maximum size or quota for the file share.
  • Erstellen eines SAS-Schlüssels (Shared Access Signature) für eine Datei, die eine für die Freigabe definierte gespeicherte Zugriffsrichtlinie verwendetCreate a shared access signature (SAS key) for a file that uses a stored access policy defined on the share.
  • Kopieren einer Datei in eine andere Datei im gleichen SpeicherkontoCopy a file to another file in the same storage account.
  • Kopieren einer Datei in ein Blob im gleichen SpeicherkontoCopy a file to a blob in the same storage account.
  • Verwenden von Azure-Speichermetriken für die ProblembehandlungUse Azure Storage Metrics for troubleshooting.

Weitere Informationen zu Azure Files finden Sie unter Was ist Azure Files?.To learn more about Azure Files, see What is Azure Files?

Tipp

Repository mit Azure Storage-CodebeispielenCheck out the Azure Storage code samples repository

In unserer Liste mit Azure Storage-Beispielen finden Sie benutzerfreundliche, umfassende Azure Storage-Codebeispiele, die Sie herunterladen und ausführen können.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.

Grundlegendes zu den .NET-APIsUnderstanding the .NET APIs

Azure Files bietet zwei allgemeine Ansätze für Clientanwendungen: Server Message Block (SMB) und REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. Innerhalb von .NET werden diese Ansätze durch die APIs System.IO und WindowsAzure.Storage abstrahiert.Within .NET, the System.IO and WindowsAzure.Storage APIs abstract these approaches.

APIAPI VerwendungWhen to use NotizenNotes
System.IOSystem.IO Ihre Anwendung:Your application:
  • Muss Dateien mithilfe von SMB lesen/schreibenNeeds to read/write files by using SMB
  • Wird auf einem Gerät ausgeführt, das über Port 445 Zugriff auf Ihr Azure Files-Konto hatIs running on a device that has access over port 445 to your Azure Files account
  • Muss keine Verwaltungseinstellungen der Dateifreigabe verwaltenDoesn't need to manage any of the administrative settings of the file share
Datei-E/A-Vorgänge, die mit Azure Files über SMB implementiert wurden, entsprechen normalerweise E/A-Vorgängen bei einer beliebigen Netzwerkdateifreigabe oder einem beliebigen lokalen Speichergerät.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. Eine Einführung in mehrere Features in .NET, einschließlich Datei-E/A-Vorgängen, finden Sie im Tutorial zur Konsolenanwendung.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 Ihre Anwendung:Your application:
  • Kann aufgrund von Firewall- oder ISP-Einschränkungen nicht mithilfe von SMB an Port 445 auf Azure Files zugreifenCan't access Azure Files by using SMB on port 445 because of firewall or ISP constraints
  • Benötigt Verwaltungsfunktionen, etwa die Möglichkeit, das Kontingent einer Dateifreigabe festzulegen oder eine SAS (Shared Access Signature) zu erstellenRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
Dieser Artikel veranschaulicht die Verwendung von Microsoft.Azure.Storage.File für Datei-E/A-Vorgänge mithilfe von REST statt SMB sowie die Verwaltung der Dateifreigabe.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.

Erstellen der Konsolenanwendung und Erhalten der AssemblyCreate the console application and obtain the assembly

Erstellen Sie in Visual Studio eine neue Windows-Konsolenanwendung.In Visual Studio, create a new Windows console application. In den folgenden Schritten wird veranschaulicht, wie Sie eine Konsolenanwendung in Visual Studio 2019 erstellen.The following steps show you how to create a console application in Visual Studio 2019. Die Schritte sind in anderen Versionen von Visual Studio ähnlich.The steps are similar in other versions of Visual Studio.

  1. Starten Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus.Start Visual Studio and select Create a new project.
  2. Wählen Sie unter Neues Projekt erstellen die Option Konsolen-App (.NET Framework) für C# und dann Weiter aus.In Create a new project, choose Console App (.NET Framework) for C#, and then select Next.
  3. Geben Sie unter Neues Projekt konfigurieren einen Namen für die App ein, und wählen Sie Erstellen aus.In Configure your new project, enter a name for the app, and select Create.

Sie können alle Codebeispiele in diesem Tutorial der Main()-Methode in der Datei Program.cs Ihrer Konsolenanwendung hinzufügen.You can add all the code examples in this tutorial to the Main() method of your console application's Program.cs file.

Sie können die Azure Storage-Clientbibliothek in jedem beliebigen Typ einer .NET-Anwendung verwenden.You can use the Azure Storage client library in any type of .NET application. Diese Typen umfassen einen Azure-Clouddienst oder eine Azure-Web-App sowie Desktopanwendungen und mobile Anwendungen.These types include an Azure cloud service or web app, and desktop and mobile applications. In diesem Leitfaden verwenden wir der Einfachheit halber eine Konsolenanwendung.In this guide, we use a console application for simplicity.

Verwenden von NuGet zum Installieren der erforderlichen PaketeUse NuGet to install the required packages

Verweisen Sie in Ihrem Projekt auf diese Pakete, um folgendes Tutorial durchzuarbeiten:Refer to these packages in your project to complete this tutorial:

Sie können NuGet verwenden, um beide Pakete zu erhalten.You can use NuGet to obtain both packages. Folgen Sie diesen Schritten:Follow these steps:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, und wählen Sie NuGet-Pakete verwalten aus.In Solution Explorer, right-click your project and choose Manage NuGet Packages.

  2. Wählen Sie in NuGet Package Manager die Option Durchsuchen aus.In NuGet Package Manager, select Browse. Suchen Sie dann nach Microsoft.Azure.Storage.Blob, und wählen Sie es aus. Wählen Sie dann Installieren aus.Then search for and choose Microsoft.Azure.Storage.Blob, and then select Install.

    Mit diesem Schritt werden das Paket und seine Abhängigkeiten installiert.This step installs the package and its dependencies.

  3. Suchen und installieren Sie diese Pakete: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

Speichern der Anmeldeinformationen für Ihr Speicherkonto in der Datei „App.config“Save your storage account credentials to the App.config file

Speichern Sie als Nächstes Ihre Anmeldeinformationen in der Datei App.config Ihres Projekts.Next, save your credentials in your project's App.config file. Doppelklicken Sie im Projektmappen-Explorer auf App.config, und bearbeiten Sie die Datei so, dass sie dem folgenden Beispiel ähnelt.In Solution Explorer, double-click App.config and edit the file so that it is similar to the following example. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos und mykey durch Ihren Speicherkontoschlüssel.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>

Hinweis

Die neueste Version des Azure-Speicheremulators unterstützt Azure Files nicht. Die Verbindungszeichenfolge muss auf ein Azure Storage-Konto in der Cloud verweisen, um mit Azure Files arbeiten zu können.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Hinzufügen von using-DirektivenAdd using directives

Öffnen Sie im Projektmappen-Explorer die Datei Program.cs, und fügen Sie an deren Anfang Folgendes mithilfe von using-Direktiven hinzu.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

Die Microsoft Azure Configuration Manager-Bibliothek für .NET stellt eine Klasse für die Analyse einer Verbindungszeichenfolge aus einer Konfigurationsdatei bereit.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. Die Klasse CloudConfigurationManager analysiert Konfigurationseinstellungen.The CloudConfigurationManager class parses configuration settings. Sie analysiert Einstellungen für Clientanwendungen, die auf dem Desktop, auf einem mobilen Gerät, auf einem virtuellen Azure-Computer oder in einem Azure-Clouddienst ausgeführt werden.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.

Fügen Sie die folgenden using-Anweisungen hinzu, um auf das Paket CloudConfigurationManager zu verweisen:To reference the CloudConfigurationManager package, add the following using directives:

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

Das folgende Beispiel zeigt, wie Sie eine Verbindungszeichenfolge aus einer Konfigurationsdatei abrufen: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"));

Die Verwendung von Azure Configuration Manager ist optional.Using the Azure Configuration Manager is optional. Sie können auch eine API wie die Klasse „ConfigurationManager“ von .NET Framework verwenden.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Programmgesteuertes Zugreifen auf die DateifreigabeAccess the file share programmatically

Fügen Sie als Nächstes den folgenden Inhalt zur Main()-Methode (nach dem oben angegebenen Code) hinzu, um die Verbindungszeichenfolge abzurufen.Next, add the following content to the Main() method, after the code shown above, to retrieve the connection string. Dieser Code ruft einen Verweis auf die zuvor erstellte Datei ab und gibt deren Inhalt aus.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);
        }
    }
}

Führen Sie die Konsolenanwendung aus, um die Ausgabe zu sehen.Run the console application to see the output.

Festlegen der maximalen Größe für eine DateifreigabeSet the maximum size for a file share

Ab Version 5.x der Azure Storage-Clientbibliothek können Sie das Kontingent (die maximale Größe) für eine Dateifreigabe festlegen.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (maximum size) for a file share. Sie können auch überprüfen, wie viele Daten sich aktuell auf der Freigabe befinden.You can also check to see how much data is currently stored on the share.

Eine Festlegung des Kontingents für eine Freigabe begrenzt die Gesamtgröße der Dateien, die in der Freigabe gespeichert werden.Setting the quota for a share limits the total size of the files stored on the share. Wenn die Gesamtgröße der Dateien in der Freigabe das dafür festgelegte Kontingent überschreitet, können Clients die Größe vorhandener Dateien nicht erhöhen.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. Clients können keine neuen Dateien erstellen, außer wenn diese Dateien leer sind.Clients can't create new files, unless those files are empty.

Das folgende Beispiel zeigt, wie Sie die aktuelle Nutzung einer Freigabe überprüfen und das Kontingent für die Freigabe festlegen.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);
}

Generieren einer SAS für eine Datei oder DateifreigabeGenerate a shared access signature for a file or file share

Ab Version 5.x der Azure Storage-Clientbibliothek können Sie eine SAS (Shared Access Signature) für eine Dateifreigabe oder für eine einzelne Datei generieren.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. Sie können auch eine gespeicherte Zugriffsrichtlinie für eine Dateifreigabe erstellen, um Shared Access Signatures zu verwalten.You can also create a stored access policy on a file share to manage shared access signatures. Es wird empfohlen, eine gespeicherte Zugriffsrichtlinie zu erstellen, weil Sie die SAS widerrufen können, wenn sie gefährdet ist.We recommend creating a stored access policy because it lets you revoke the SAS if it becomes compromised.

Im folgenden Beispiel wird eine gespeicherte Zugriffsrichtlinie für eine Freigabe erstellt.The following example creates a stored access policy on a share. Diese Richtlinie wird verwendet, um die Einschränkungen bei einer SAS für eine Datei in der Freigabe bereitzustellen.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());
}

Weitere Informationen zum Erstellen und Verwenden von Shared Access Signatures finden Sie unter Funktionsweise von Shared Access Signatures.For more information about creating and using shared access signatures, see How a shared access signature works.

Kopieren von DateienCopy files

Ab Version 5.x der Azure Storage-Clientbibliothek können Sie eine Datei in eine andere Datei, eine Datei in ein Blob oder ein Blob in eine Datei kopieren.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. In den nächsten Abschnitten wird veranschaulicht, wie diese Kopiervorgänge programmgesteuert ausgeführt werden.In the next sections, we demonstrate how to do these copy operations programmatically.

Sie können auch AzCopy verwenden, um eine Datei in eine andere oder ein Blob in eine Datei (oder umgekehrt) zu kopieren.You can also use AzCopy to copy one file to another or to copy a blob to a file or the other way around. Informationen finden Sie unter Übertragen von Daten mit AzCopy v10.See Get started with AzCopy.

Hinweis

Wenn Sie ein BLOB in eine Datei oder eine Datei in ein BLOB kopieren, müssen Sie eine SAS verwenden, um den Zugriff auf das Quellobjekt zu autorisieren. Dies gilt selbst dann, wenn Sie innerhalb desselben Speicherkontos kopieren.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.

Kopieren einer Datei in eine andere DateiCopy a file to another file

Im folgenden Beispiel wird eine Datei in eine andere Datei in derselben Freigabe kopiert.The following example copies a file to another file in the same share. Weil bei diesem Kopiervorgang zwischen Dateien im selben Speicherkonto kopiert wird, können Sie dafür die Authentifizierung über gemeinsam verwendete Schlüssel verwenden.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());
        }
    }
}

Kopieren einer Datei in ein BlobCopy a file to a blob

Im folgenden Beispiel wird eine Datei erstellt und in ein Blob im selben Speicherkonto kopiert.The following example creates a file and copies it to a blob within the same storage account. In dem Beispiel wird für die Quelldatei eine SAS erstellt, die der Dienst dazu verwendet, während des Kopiervorgangs den Zugriff auf die Quelldatei zu autorisieren.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());

Auf gleiche Weise können Sie ein BLOB in eine Datei kopieren.You can copy a blob to a file in the same way. Wenn das Quellobjekt ein BLOB ist, erstellen Sie eine SAS, um den Zugriff auf dieses BLOB während des Kopiervorgangs zu autorisieren.If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

FreigabemomentaufnahmenShare snapshots

Ab Version 8.5 der Azure Storage-Clientbibliothek können Sie eine Freigabemomentaufnahme erstellen.Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. Außerdem können Sie Freigabemomentaufnahmen auflisten, durchsuchen und löschen.You can also list or browse share snapshots and delete share snapshots. Freigabemomentaufnahmen sind schreibgeschützt. Es können also keine Schreibvorgänge für Freigabemomentaufnahmen ausgeführt werden.Share snapshots are read-only so no write operations are allowed on share snapshots.

Erstellen von FreigabemomentaufnahmenCreate share snapshots

Im folgenden Beispiel wird eine Freigabemomentaufnahme erstellt.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();

Auflisten von FreigabemomentaufnahmenList share snapshots

Im folgenden Beispiel werden die Freigabemomentaufnahmen in einer Freigabe aufgelistet.The following example lists the share snapshots on a share.

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

Durchsuchen von Dateien und Verzeichnissen in FreigabemomentaufnahmenBrowse files and directories within share snapshots

Im folgenden Beispiel werden Dateien und das Verzeichnis in Freigabemomentaufnahmen durchsucht.The following example browses files and directory within share snapshots.

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

Auflisten von Freigaben und Freigabemomentaufnahmen sowie Wiederherstellen von Dateifreigaben oder Dateien aus FreigabemomentaufnahmenList shares and share snapshots and restore file shares or files from share snapshots

Die Erstellung einer Momentaufnahme von einer Dateifreigabe ermöglicht die spätere Wiederherstellung einzelner Dateien oder der gesamten Dateifreigabe.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

Zum Wiederherstellen einer Datei aus einer Dateifreigabemomentaufnahme können Sie die Freigabemomentaufnahmen einer Dateifreigabe abfragen.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Danach können Sie eine Datei abrufen, die zu einer bestimmten Freigabemomentaufnahme gehört.You can then retrieve a file that belongs to a particular share snapshot. Verwenden Sie diese Version entweder zum direkten Lesen und Vergleichen oder zum Wiederherstellen.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));

Löschen von FreigabemomentaufnahmenDelete share snapshots

Im folgenden Beispiel wird eine Freigabemomentaufnahme gelöscht.The following example deletes a file share snapshot.

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

Behandeln von Azure Files-Problemen mithilfe von MetrikenTroubleshoot Azure Files by using metrics

Azure Storage Analytics unterstützt nun Metriken für Azure Files.Azure Storage Analytics now supports metrics for Azure Files. Mit Metrikdaten können Sie Anforderungen verfolgen und Probleme diagnostizieren.With metrics data, you can trace requests and diagnose issues.

Die Metriken für Azure Files können über das Azure-Portal aktiviert werden.You can enable metrics for Azure Files from the Azure portal. Sie können Metriken auch programmgesteuert aktivieren, indem Sie den Vorgang „Set File Service Properties“ mit der REST-API oder einem ihrer analogen Vorgänge in der Speicherclientbibliothek aufrufen.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.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die Storage-Clientbibliothek für .NET zum Aktivieren von Metriken für Azure Files verwenden.The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

Fügen Sie Ihrer Datei Program.cs zunächst die folgenden using-Direktiven zusammen mit den oben hinzugefügten Direktiven hinzu: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;

Obwohl bei Azure-Blobs, Azure-Tabellen und Azure-Warteschlangen der gemeinsam genutzte Typ ServiceProperties im Namespace Microsoft.Azure.Storage.Shared.Protocol verwendet wird, verwendet Azure Files seinen eigenen Typ (FileServiceProperties) im Namespace Microsoft.Azure.Storage.File.Protocol.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. Sie müssen aber in Ihrem Code auf beide Namespaces verweisen, damit der folgende Code kompiliert werden kann.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);

Wenn Probleme auftreten, können Sie auf Behandeln von Azure Files-Problemen unter Windows verweisen.If you encounter any problems, you can refer to Troubleshoot Azure Files problems in Windows.

Nächste SchritteNext steps

Weitere Informationen zu Azure Files finden Sie in den folgenden Ressourcen:For more information about Azure Files, see the following resources:

Konzeptionelle Artikel und VideosConceptual articles and videos

Toolunterstützung für DateispeicherTooling support for File storage

VerweisReference

BlogbeiträgeBlog posts