Eseguire lo sviluppo per File di Azure con .NETDevelop for Azure Files with .NET

Questa esercitazione illustra le nozioni di base per l'uso di .NET per sviluppare applicazioni che usano File di Azure per archiviare i dati dei file.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. Questa esercitazione crea una semplice applicazione console per eseguire azioni di base con .NET e File di Azure:This tutorial creates a simple console application to perform basic actions with .NET and Azure Files:

  • Ottenere il contenuto di un fileGet the contents of a file
  • Impostare la quota (dimensione massima) per la condivisione file.Set the quota (maximum size) for the file share.
  • Creare una firma di accesso condiviso (chiave di firma di accesso condiviso) per un file che usa un criterio di accesso condiviso definito nella condivisione.Create a shared access signature (SAS key) for a file that uses a shared access policy defined on the share.
  • Copiare un file in un altro file nello stesso account di archiviazione.Copy a file to another file in the same storage account.
  • Copiare un file in un BLOB nello stesso account di archiviazione.Copy a file to a blob in the same storage account.
  • Usare la metrica di archiviazione di Azure per la risoluzione dei problemiUse Azure Storage Metrics for troubleshooting

Per altre informazioni su File di Azure, vedere Introduzione a File di Azure.To learn more about Azure Files, see Introduction to Azure Files.

Suggerimento

Estrarre il repository degli esempi di codice di Archiviazione di AzureCheck out the Azure Storage code samples repository

Per esempi di codice end-to-end facile da usare che è possibile scaricare ed eseguire, vedere l'elenco di esempi di Archiviazione di Azure.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.

Informazioni sulle API .NETUnderstanding the .NET APIs

File di Azure offre due ampi approcci alle applicazioni client: Server Message Block (SMB) e REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. In .NET questi approcci vengono astratti dalle API System.IO e WindowsAzure.Storage.Within .NET, these approaches are abstracted by the System.IO and WindowsAzure.Storage APIs.

APIAPI Quando usare le autorizzazioniWhen to use NoteNotes
System.IOSystem.IO L'applicazione:Your application:
  • Deve leggere/scrivere file tramite SMBNeeds to read/write files via SMB
  • È in esecuzione su un dispositivo che ha accesso tramite la porta 445 all'account File di AzureIs running on a device that has access over port 445 to your Azure Files account
  • Non deve gestire le impostazioni amministrative della condivisione fileDoesn't need to manage any of the administrative settings of the file share
La codifica dell'I/O dei file con File di Azure tramite SMB è in genere uguale alla codifica dell'I/O con le condivisioni file di rete o i dispositivi di archiviazione locale.Coding file I/O with Azure Files over SMB is generally the same as coding I/O with any network file share or local storage device. Per un'introduzione ad alcune funzionalità di .NET, incluso l'I/O dei file, vedere questa esercitazione.See this tutorial for an introduction to a number of features in .NET, including file I/O.
Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File L'applicazione:Your application:
  • Non può accedere a File di Azure tramite SMB sulla porta 445 a causa del firewall o dei vincoli dell'ISPCan't access Azure Files via SMB on port 445 due to firewall or ISP constraints
  • Richiede funzionalità amministrative, ad esempio la possibilità di impostare la quota di una condivisione file o di creare una firma di accesso condivisoRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
Questo articolo illustra l'utilizzo di Microsoft.Azure.Storage.File per l'I/O dei file tramite REST (invece di SMB) e la gestione della condivisione file.This article demonstrates the usage of Microsoft.Azure.Storage.File for file I/O using REST (instead of SMB) and management of the file share.

Creare l'applicazione console e ottenere l'assemblyCreate the console application and obtain the assembly

In Visual Studio creare una nuova applicazione console di Windows.In Visual Studio, create a new Windows console application. La procedura seguente illustra come creare un'applicazione console in Visual Studio 2017, ma i passaggi sono simili anche per le altre versioni di Visual Studio.The following steps show you how to create a console application in Visual Studio 2017, however, the steps are similar in other versions of Visual Studio.

  1. Selezionare File > Nuovo > ProgettoSelect File > New > Project
  2. Selezionare Installati > Modelli > Visual C# > Desktop classico di WindowsSelect Installed > Templates > Visual C# > Windows Classic Desktop
  3. Selezionare App console (.NET Framework)Select Console App (.NET Framework)
  4. Immettere un nome per l'applicazione nel campo NomeEnter a name for your application in the Name: field
  5. Selezionare OK.Select OK

Tutti gli esempi di codice in questa esercitazione possono essere aggiunti al metodo Main() del file Program.cs dell'applicazione console.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

È possibile usare la libreria client di archiviazione di Azure in qualsiasi tipo di applicazione .NET, tra cui un servizio cloud o un'app Web di Azure e applicazioni desktop e per dispositivi mobili.You can use the Azure Storage client library in any type of .NET application, including an Azure cloud service or web app, and desktop and mobile applications. Per semplicità, in questa guida si usa un'applicazione console.In this guide, we use a console application for simplicity.

Usare NuGet per installare i pacchetti necessariUse NuGet to install the required packages

Per completare questa esercitazione, è necessario fare riferimento a questi pacchetti nel progetto:These are packages you need to reference in your project to complete this tutorial:

Per ottenere entrambi i pacchetti, è possibile usare NuGet.You can use NuGet to obtain both packages. Attenersi ai passaggi riportati di seguito.Follow these steps:

  1. Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e scegliere Gestisci pacchetti NuGet.Right-click your project in Solution Explorer and choose Manage NuGet Packages.
  2. Cercare online "WindowsAzure.Storage" e fare clic su Installa per installare il pacchetto della libreria client di archiviazione e le relative dipendenze.Search online for "WindowsAzure.Storage" and click Install to install the Storage Client Library and its dependencies.
  3. Cercare online "WindowsAzure.ConfigurationManager" e fare clic su Installa per installare Gestione configurazione di Azure.Search online for "WindowsAzure.ConfigurationManager" and click Install to install the Azure Configuration Manager.

Salvare le credenziali dell'account di archiviazione nel file app.configSave your storage account credentials to the app.config file

A questo punto salvare le credenziali nel file app.config del progetto.Next, save your credentials in your project's app.config file. Modificare il file app.config in modo che assomigli all'esempio seguente, sostituendo myaccount con il nome dell'account di archiviazione e mykey con la chiave dell'account di archiviazione.Edit the app.config file so that it appears similar to the following example, replacing 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>

Nota

L'ultima versione dell'emulatore di archiviazione di Azure non supporta File di Azure. Per poter usare File di Azure, la stringa di connessione deve specificare come destinazione un account di archiviazione di Azure nel cloud.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Aggiungere le direttive usingAdd using directives

Aprire il file Program.cs da Esplora soluzioni e aggiungere le direttive using seguenti all'inizio del file.Open the Program.cs file from Solution Explorer, 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

La libreria di Gestione configurazione di Microsoft Azure per .NET fornisce una classe per l'analisi della stringa di connessione da un file di configurazione.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. La classe CloudConfigurationManager analizza le impostazioni di configurazione indipendentemente dal fatto che l'applicazione client sia in esecuzione sul PC desktop, su un dispositivo mobile, in una macchina virtuale di Azure o in un servizio cloud di Azure.The CloudConfigurationManager class parses configuration settings regardless of whether the client application is running on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Per fare riferimento al pacchetto CloudConfigurationManager, aggiungere l'istruzione using seguente:To reference the CloudConfigurationManager package, add the following using directive:

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

Ecco un esempio che illustra come recuperare una stringa di connessione da un file di configurazione: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"));

L'uso di Gestione configurazione di Azure è facoltativo.Using the Azure Configuration Manager is optional. È anche possibile usare un'API, ad esempio la classe ConfigurationManager di .NET Framework.You can also use an API like the .NET Framework's ConfigurationManager class.

Accedere alla condivisione file a livello di programmazioneAccess the file share programmatically

A questo punto aggiungere il codice seguente al metodo Main(), dopo il codice indicato sopra, per recuperare la stringa di connessione.Next, add the following code to the Main() method (after the code shown above) to retrieve the connection string. Questo codice ottiene un riferimento al file creato in precedenza e genera i contenuti nella finestra della console.This code gets a reference to the file we created earlier and outputs its contents to the console window.

// 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);
        }
    }
}

Eseguire l'applicazione console per visualizzare l'output.Run the console application to see the output.

Impostare la dimensione massima per una condivisione fileSet the maximum size for a file share

A partire dalla versione 5.x della libreria client di archiviazione di Azure, è possibile impostare la quota (o dimensione massima) per una condivisione file, in gigabyte.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (or maximum size) for a file share, in gigabytes. È anche possibile controllare la quantità di dati archiviata attualmente nella condivisione.You can also check to see how much data is currently stored on the share.

Impostando la quota per una condivisione, è possibile limitare la dimensione totale dei file archiviati nella condivisione.By setting the quota for a share, you can limit the total size of the files stored on the share. Se la dimensione totale dei file nella condivisione supera la quota impostata per la condivisione, i client non saranno in grado di aumentare le dimensioni dei file esistenti o creare nuovi file, a meno che tali file non siano vuoti.If the total size of files on the share exceeds the quota set on the share, then clients will be unable to increase the size of existing files or create new files, unless those files are empty.

L'esempio seguente illustra come controllare l'uso corrente per una condivisione e come impostare la quota per la condivisione.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);
}

Generare la firma di accesso condiviso per un file o una condivisione fileGenerate a shared access signature for a file or file share

A partire dalla versione 5.x della Libreria del client di archiviazione di Azure, è possibile generare una firma di accesso condiviso (SAS) per una condivisione file o per un singolo file.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. È inoltre possibile creare un criterio di accesso condiviso in una condivisione file per gestire le firme di accesso condiviso.You can also create a shared access policy on a file share to manage shared access signatures. È consigliabile creare un criterio di accesso condiviso, in quanto fornisce un modo per revocare la firma SAS se necessario.Creating a shared access policy is recommended, as it provides a means of revoking the SAS if it should be compromised.

Nell'esempio seguente viene creato un criterio di accesso condiviso in una condivisione e quindi viene usato tale criterio per fornire i vincoli per una firma di accesso condiviso su un file della condivisione.The following example creates a shared access policy on a share, and then 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 shared 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 shared 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());
}

Per altre informazioni sulla creazione e l'uso di firme di accesso condiviso, vedere Uso delle firme di accesso condiviso.For more information about creating and using shared access signatures, see Using Shared Access Signatures (SAS).

Copiare i fileCopy files

A partire dalla versione 5.x della libreria del client di archiviazione di Azure, è possibile copiare un file in un altro file, un file in un BLOB o un BLOB in un file.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. Le sezioni seguenti illustrano come eseguire queste operazioni di copia a livello di programmazione.In the next sections, we demonstrate how to perform these copy operations programmatically.

È inoltre possibile utilizzare AzCopy per copiare un file in un altro o per copiare un blob in un file o viceversa.You can also use AzCopy to copy one file to another or to copy a blob to a file or vice versa. Vedere Trasferire dati con l'utilità della riga di comando AzCopy.See Transfer data with the AzCopy Command-Line Utility.

Nota

Se si copia un BLOB in un file o un file in un BLOB, è necessario usare una firma di accesso condiviso per autorizzare l'accesso all'oggetto di origine, anche se la copia viene eseguita nello stesso account di archiviazione.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.

Copiare un file in un altro file Nell'esempio seguente viene copiato un file in un altro file nella stessa condivisione.Copy a file to another file The following example copies a file to another file in the same share. Poiché questa operazione esegue la copia tra file nello stesso account di archiviazione, è possibile utilizzare l'autenticazione chiave condivisa per eseguire la copia.Because this copy operation copies between files in the same storage account, you can use Shared Key authentication to perform 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());
        }
    }
}

Copiare un file in un BLOB Nell'esempio seguente viene creato un file che viene copiato in un BLOB nello stesso account di archiviazione.Copy a file to a blob The following example creates a file and copies it to a blob within the same storage account. L'esempio crea una firma di accesso condiviso per il file di origine, che il servizio usa per autorizzare l'accesso al file di origine durante l'operazione di copia.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());

È possibile copiare un BLOB in un file nello stesso modo.You can copy a blob to a file in the same way. Se l'oggetto di origine è un BLOB, creare una firma di accesso condiviso per autorizzare l'accesso al BLOB durante l'operazione di copia.If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

Snapshot di condivisioneShare snapshots

A partire dalla versione 8.5 della libreria client di archiviazione di Azure, è possibile creare uno snapshot di condivisione,Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. nonché elencare, esplorare ed eliminare snapshot di condivisione.You can also list or browse share snapshots and delete share snapshots. Gli snapshot di condivisione sono di sola lettura, di conseguenza non sono consentite operazioni di scrittura su di essi.Share snapshots are read-only so no write operations are allowed on share snapshots.

Creare snapshot di condivisioneCreate share snapshots

L'esempio seguente crea uno snapshot di condivisione file.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();

Elencare gli snapshot di condivisioneList share snapshots

L'esempio seguente elenca gli snapshot di condivisione in una condivisione.The following example lists the share snapshots on a share.

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

Esplorare i file e le directory negli snapshot di condivisioneBrowse files and directories within share snapshots

L'esempio seguente esplora file e directory all'interno degli snapshot di condivisione.The following example browses files and directory within share snapshots.

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

Elencare condivisioni e snapshot di condivisione e ripristinare condivisioni file o file da snapshot di condivisioneList shares and share snapshots and restore file shares or files from share snapshots

La creazione di uno snapshot di una condivisione file consente di ripristinare in futuro singoli file o l'intera condivisione.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

È possibile ripristinare un file da uno snapshot di condivisione file eseguendo una query sugli snapshot di condivisione di una condivisione file.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Si può quindi recuperare un file appartenente a un determinato snapshot di condivisione e usare tale versione per eseguire direttamente la lettura e il confronto oppure per il ripristino.You can then retrieve a file that belongs to a particular share snapshot and 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));

Eliminare snapshot di condivisioneDelete share snapshots

L'esempio seguente elimina uno snapshot di condivisione file.The following example deletes a file share snapshot.

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

Risoluzione dei problemi di File di Azure con le metricheTroubleshooting Azure Files using metrics

Analisi archiviazione di Azure supporta ora metriche per File di Azure.Azure Storage Analytics now supports metrics for Azure Files. Grazie ai dati di metrica, è possibile monitorare le richieste e diagnosticare i problemi.With metrics data, you can trace requests and diagnose issues.

È possibile abilitare le metriche per File di Azure dalla portale di Azure.You can enable metrics for Azure Files from the Azure portal. È anche possibile abilitare le metriche a livello di codice chiamando l'operazione Set File Service Properties tramite l'API REST o una delle soluzioni analoghe disponibili nella libreria client di archiviazione.You can also enable metrics programmatically by calling the Set File Service Properties operation via the REST API, or one of its analogs in the Storage Client Library.

L'esempio di codice seguente mostra come usare la libreria client di archiviazione per .NET per abilitare le metriche per File di Azure.The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

Aggiungere prima le direttive using seguenti al file Program.cs, oltre a quelle aggiunte sopra:First, add the following using directives to your Program.cs file, in addition to those you added above:

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

Si noti che, anche se i BLOB, le tabelle e le code di Azure usano il tipo ServiceProperties condiviso nello spazio dei nomi Microsoft.Azure.Storage.Shared.Protocol, File di Azure usa un proprio tipo, ossia il tipo FileServiceProperties nello spazio dei nomi Microsoft.Azure.Storage.File.Protocol.Note that while Azure Blobs, Azure Table, 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. È tuttavia necessario fare riferimento a entrambi gli spazi dei nomi dal proprio codice, per poter compilare il codice seguente.Both namespaces must be referenced 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);

È anche possibile fare riferimento all'articolo sulla risoluzione dei problemi di archiviazione file di Azure per indicazioni sulla risoluzione dei problemi end-to-end.Also, you can refer to Azure Files Troubleshooting Article for end-to-end troubleshooting guidance.

Passaggi successiviNext steps

Per altre informazioni su File di Azure, vedere i collegamenti seguenti.See these links for more information about Azure Files.

Articoli concettuali e videoConceptual articles and videos

Supporto degli strumenti per Archiviazione fileTooling support for File storage

RiferimentiReference

Post di BLOGBlog posts