Разработка для службы файлов Azure с помощью .NETDevelop for Azure Files with .NET

В этом руководстве рассматриваются основы использования .NET для разработки приложений, использующих службу файлов Azure для хранения данных файлов.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. В этом руководстве создается простое консольное приложение для основных действий с файлами .NET и Azure.This tutorial creates a simple console application to do basic actions with .NET and Azure Files:

  • Получение содержимого файла.Get the contents of a file.
  • Задайте максимальный размер или квоту для общей папки.Set the maximum size or quota for the file share.
  • Создайте подписанный URL-адрес (ключ SAS) для файла, который использует хранимую политику доступа, определенную в общей папке.Create a shared access signature (SAS key) for a file that uses a stored access policy defined on the share.
  • Скопируйте файл в другой файл в той же учетной записи храненияCopy a file to another file in the same storage account.
  • Скопируйте файл в BLOB-объект в той же учетной записи храненияCopy a file to a blob in the same storage account.
  • Используйте метрики службы хранилища Azure для устранения неполадок.Use Azure Storage Metrics for troubleshooting.

Дополнительные сведения о службе файлов Azure см. в статье что такое служба файлов Azure?To learn more about Azure Files, see What is Azure Files?

Совет

См. примеры кода в репозитории службы хранилища AzureCheck out the Azure Storage code samples repository

Полные и простые в применении примеры кода для службы хранилища 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.

Основные сведения об API-интерфейсах .NETUnderstanding the .NET APIs

Служба файлов Azure предлагает два широких подхода к использованию клиентских приложений: SMB (блок сообщений сервера) и REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. В .NET API- System.IO интерфейсы WindowsAzure.Storage и представляют собой абстрактные подходы.Within .NET, the System.IO and WindowsAzure.Storage APIs abstract these approaches.

APIAPI НазначениеWhen to use ПримечанияNotes
System.IOSystem.IO Требования вашего приложения:Your application:
  • Требуется чтение и запись файлов с помощью SMBNeeds to read/write files by using SMB
  • выполнение на устройстве, которое получает доступ к учетной записи службы файлов Azure через порт 445;Is running on a device that has access over port 445 to your Azure Files account
  • не требуется управлять параметрами администрирования общей папки.Doesn't need to manage any of the administrative settings of the file share
Файловый ввод-вывод, реализованный в службе файлов Azure по протоколу SMB, обычно аналогичен вводу-выводу с любым сетевым файловым ресурсом или локальным устройством хранения.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. Общие сведения о ряде функций .NET, включая ввод-вывод файлов, см. в руководстве по консольному приложению .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 Требования вашего приложения:Your application:
  • Не удается получить доступ к службе файлов Azure по протоколу SMB через порт 445 из-за ограничений брандмауэра или поставщика услуг Интернета.Can't access Azure Files by using SMB on port 445 because of firewall or ISP constraints
  • требуются административные функции, например возможность задать квоту для общей папки или создать подписанный URL-адрес.Requires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
В этой статье показано использование Microsoft.Azure.Storage.File операций файлового ввода-вывода с помощью функции RESTful вместо протокола SMB и управления файловым ресурсом.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.

Создание консольного приложения и получение сборкиCreate the console application and obtain the assembly

В Visual Studio создайте новое консольное приложение Windows.In Visual Studio, create a new Windows console application. Ниже показано, как создать консольное приложение в Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. Эти же действия можно выполнить и в других версиях Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Запустите Visual Studio и щелкните Создать проектStart Visual Studio and select Create a new project.
  2. В окне Создание нового проектавыберите консольное приложение (.NET Framework) для C#, а затем нажмите кнопку Далее.In Create a new project, choose Console App (.NET Framework) for C#, and then select Next.
  3. В окне Настройка нового проектавведите имя приложения и нажмите кнопку создать.In Configure your new project, enter a name for the app, and select Create.

Вы можете добавить все примеры кода из этого учебника в Main() метод Program.cs файла консольного приложения.You can add all the code examples in this tutorial to the Main() method of your console application's Program.cs file.

Клиентскую библиотеку службы хранилища Azure можно использовать в любом типе приложения .NET.You can use the Azure Storage client library in any type of .NET application. К этим типам относятся облачная служба Azure, веб-приложение, настольные и мобильные приложения.These types include an Azure cloud service or web app, and desktop and mobile applications. Для упрощения в этом руководстве мы будем использовать консольное приложение.In this guide, we use a console application for simplicity.

Установка необходимых пакетов с помощью NuGetUse NuGet to install the required packages

Чтобы завершить работу с этим руководством, см. Эти пакеты в проекте.Refer to these packages in your project to complete this tutorial:

Вы можете использовать NuGet для установки обоих пакетов.You can use NuGet to obtain both packages. Выполните следующие действия.Follow these steps:

  1. В Обозреватель решенийщелкните правой кнопкой мыши проект и выберите Управление пакетами NuGet.In Solution Explorer, right-click your project and choose Manage NuGet Packages.

  2. В диспетчере пакетов NuGetнажмите кнопку Обзор.In NuGet Package Manager, select Browse. Затем найдите и выберите Microsoft. Azure. Storage. BLOB, а затем нажмите кнопку установить.Then search for and choose Microsoft.Azure.Storage.Blob, and then select Install.

    На этом шаге выполняется установка пакета и его зависимостей.This step installs the package and its dependencies.

  3. Найдите и установите такие пакеты: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

Сохранение учетных данных учетной записи хранения в файле App. configSave your storage account credentials to the App.config file

Затем сохраните учетные данные в App.config файле проекта.Next, save your credentials in your project's App.config file. В Обозреватель решенийдважды щелкните App.config и измените файл, чтобы он был похож на следующий пример.In Solution Explorer, double-click App.config and edit the file so that it is similar to the following example. Замените myaccount именем вашей учетной записи хранения mykey и ключом учетной записи хранения.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>

Примечание

Последняя версия эмулятора хранения Azure не поддерживает службу файлов Azure. Для работы со службой файлов Azure необходимо, чтобы строка подключения указывала на учетную запись хранения Azure в облаке.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Добавление директив usingAdd using directives

В Обозреватель решенийоткройте Program.cs файл и добавьте следующие директивы using в начало файла.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

Библиотека Microsoft Azure Configuration Manager для .NET содержит класс для анализа строки подключения из файла конфигурации.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. Класс CloudConfigurationManager анализирует параметры конфигурации.The CloudConfigurationManager class parses configuration settings. Он анализирует параметры клиентских приложений, которые выполняются на рабочем столе, на мобильном устройстве, в виртуальной машине Azure или в облачной службе 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.

Чтобы создать ссылку CloudConfigurationManager на пакет, добавьте следующие using директивы:To reference the CloudConfigurationManager package, add the following using directives:

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

Ниже приведен пример, в котором показано получение строки подключения из файла конфигурации.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"));

Использование диспетчера конфигураций Azure не является обязательным.Using the Azure Configuration Manager is optional. Вы также можете использовать API, например класс ConfigurationManager.NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Доступ к общей папке программным путемAccess the file share programmatically

Затем добавьте следующее содержимое в Main() метод после приведенного выше кода, чтобы получить строку подключения.Next, add the following content to the Main() method, after the code shown above, to retrieve the connection string. Этот код получает ссылку на созданный ранее файл и выводит его содержимое.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);
        }
    }
}

Запустите консольное приложение и получите вывод.Run the console application to see the output.

Установка максимального размера для файлового ресурсаSet the maximum size for a file share

Начиная с версии 5. x клиентской библиотеки службы хранилища Azure, можно задать квоту (максимальный размер) для файлового ресурса.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (maximum size) for a file share. Можно также проверить, какой объем данных хранится в настоящее время в общей папке.You can also check to see how much data is currently stored on the share.

Задание квоты для общего ресурса ограничивает общий размер файлов, хранящихся в общей папке.Setting the quota for a share limits the total size of the files stored on the share. Если общий размер файлов в общей папке превышает квоту, установленную в общей папке, клиенты не смогут увеличить размер существующих файлов.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 can't create new files, unless those files are empty.

В приведенном ниже примере показано, как проверить текущее использование данных в файловом ресурсе, а также задать для него квоту.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);
}

Создание подписи общего доступа для файла или файлового ресурсаGenerate a shared access signature for a file or file share

Начиная с версии 5.x клиентской библиотеки хранилища Azure можно создать подпись общего доступа (SAS) для файлового ресурса или отдельного файла.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. Вы также можете создать хранимую политику доступа в общей папке для управления подписанными URL-доступом.You can also create a stored access policy on a file share to manage shared access signatures. Рекомендуется создать хранимую политику доступа, так как она позволяет отозвать SAS, если она будет скомпрометирована.We recommend creating a stored access policy because it lets you revoke the SAS if it becomes compromised.

В следующем примере создается хранимая политика доступа для общей папки.The following example creates a stored access policy on a share. В примере эта политика используется для предоставления ограничений для SAS в файле в общей папке.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());
}

Дополнительные сведения о создании и использовании подписанных URL-отправок см. в статье как работает подпись общего доступа.For more information about creating and using shared access signatures, see How a shared access signature works.

Копирование файловCopy files

Начиная с версии 5.x клиентской библиотеки хранилища Azure можно скопировать файл в другой файл, файл в большой двоичный объект или BLOB-объект в файл.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 the next sections, we demonstrate how to do these copy operations programmatically.

AzCopy также можно использовать для копирования одного файла в другой или для копирования большого двоичного объекта в файл или наоборот.You can also use AzCopy to copy one file to another or to copy a blob to a file or the other way around. См. подробнее о начале работы с AzCopy.See Get started with AzCopy.

Примечание

При копировании большого двоичного объекта в файл или файла в большой двоичный объект необходимо использовать подписанный URL-адрес (SAS) для авторизации доступа к исходному объекту, даже если копирование производится внутри одной и той же учетной записи хранения.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.

Копирование файла в другой файлCopy a file to another file

В приведенном ниже примере файл копируется в другой файл в той же общей папке.The following example copies a file to another file in the same share. Так как эта операция копирования копирует между файлами в одной учетной записи хранения, для копирования можно использовать проверку подлинности с помощью общего ключа.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());
        }
    }
}

Копирование файла в большой двоичный объектCopy a file to a blob

В приведенном ниже примере файл создается и копируется в большой двоичный объект в пределах одной и той же учетной записи хранения.The following example creates a file and copies it to a blob within the same storage account. В примере для исходного файла создается SAS, который служба использует для авторизации доступа к исходному файлу во время операции копирования.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());

Таким же образом можно скопировать BLOB-объект в файл.You can copy a blob to a file in the same way. Если исходным объектом является большой двоичный объект, создайте SAS для авторизации доступа к этому объекту во время операции копирования.If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

Моментальные снимки общих ресурсовShare snapshots

Начиная с версии 8.5 клиентской библиотеки службы хранилища Azure, можно создавать моментальные снимки общих ресурсов.Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. Можно также получить список моментальных снимков общих ресурсов, просмотреть и удалить их.You can also list or browse share snapshots and delete share snapshots. Моментальные снимки общих ресурсов доступны только для чтения, поэтому для них запрещены операции записи.Share snapshots are read-only so no write operations are allowed on share snapshots.

Создание моментальных снимков общих ресурсовCreate share snapshots

В следующем примере создается моментальный снимок общего файлового ресурса.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();

Вывод списка моментальных снимков общих ресурсовList share snapshots

В следующем примере перечисляются моментальные снимки в общем ресурсе.The following example lists the share snapshots on a share.

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

Просмотр файлов и каталогов в моментальных снимках общих ресурсовBrowse files and directories within share snapshots

В следующем примере показано, как просмотреть файлы и каталоги в моментальных снимках общих ресурсов.The following example browses files and directory within share snapshots.

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

Вывод списка общих ресурсов и их моментальных снимков и восстановление общих папок или файлов из моментальных снимков общих ресурсовList shares and share snapshots and restore file shares or files from share snapshots

Создание снимка общего файлового ресурса позволяет в будущем восстановить отдельные файлы или весь файловый ресурс.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

Файл можно восстановить из моментального снимка, сделав запрос на моментальные снимки файлового ресурса.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Затем можно получить файл, принадлежащий определенному моментальному снимку общего ресурса.You can then retrieve a file that belongs to a particular share snapshot. Используйте эту версию для непосредственного чтения и сравнения либо для восстановления.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));

Удаление моментальных снимков общих ресурсовDelete share snapshots

В следующем примере удаляется моментальный снимок общего файлового ресурса.The following example deletes a file share snapshot.

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

Устранение неполадок службы файлов Azure с помощью метрикTroubleshoot Azure Files by using metrics

Аналитика службы хранилища Azure теперь поддерживает метрики для службы файлов Azure.Azure Storage Analytics now supports metrics for Azure Files. Данные метрик позволяют отслеживать запросы и диагностировать проблемы.With metrics data, you can trace requests and diagnose issues.

Вы можете включить метрики для службы файлов Azure из портал Azure.You can enable metrics for Azure Files from the Azure portal. Вы также можете включить метрики программно, вызвав операцию SET FILE Service Properties с REST API или одним из его аналогов в клиентской библиотеке хранилища.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.

В следующем примере кода показано, как использовать клиентскую библиотеку хранилища для .NET, чтобы включить метрики для службы файлов Azure.The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

Сначала добавьте в Program.cs файл следующие using директивы, а также добавленные выше объекты.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;

Хотя большие двоичные объекты Azure, таблицы Azure и очереди Azure используют ServiceProperties общий тип в Microsoft.Azure.Storage.Shared.Protocol пространстве имен, службы файлов Azure используют собственный тип, FileServiceProperties тип в 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. Однако для компиляции следующего кода необходимо сослаться на оба пространства имен из кода.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);

Если возникнут проблемы, см. статью Устранение неполадок с файлами Azure в Windows.If you encounter any problems, you can refer to Troubleshoot Azure Files problems in Windows.

Дальнейшие шагиNext steps

Дополнительные сведения о службе файлов Azure см. в следующих ресурсах:For more information about Azure Files, see the following resources:

Тематические статьи и видеоConceptual articles and videos

Средства для работы с хранилищем файловTooling support for File storage

СправочникReference

Записи блогаBlog posts