Aracılığıyla paylaş


.NET ile Azure Dosyaları için geliştirme

Verileri depolamak için Azure Dosyalar kullanan .NET uygulamaları geliştirmenin temellerini öğrenin. Bu makalede, .NET ve Azure Dosyalar ile aşağıdakileri yapmak için basit bir konsol uygulamasının nasıl oluşturulacağı gösterilmektedir:

  • Dosyanın içeriğini alma.
  • Dosya paylaşımı için en büyük boyutu veya kotayı ayarlayın.
  • Dosya için paylaşılan erişim imzası (SAS) oluşturun.
  • Bir dosyayı aynı depolama hesabındaki başka bir dosyaya kopyalama.
  • Bir dosyayı aynı depolama hesabındaki bir bloba kopyalama.
  • Dosya paylaşımının anlık görüntüsünü oluşturun.
  • Paylaşım anlık görüntüsünden bir dosyayı geri yükleyin.
  • Sorun giderme için Azure Depolama Ölçümlerini kullanın.

Azure Dosyalar hakkında daha fazla bilgi edinmek için bkz. Azure Dosyalar nedir?

İpucu

Azure Depolama kod örnekleri havuzuna göz atın

İndirip çalıştırabileceğiniz kullanımı kolay uçtan uca Azure Depolama kod örnekleri lütfen Azure Depolama Örnekleri listemize bakın.

Şunlara uygulanır

Dosya paylaşımı türü SMB NFS
Standart dosya paylaşımları (GPv2), LRS/ZRS Yes Hayır
Standart dosya paylaşımları (GPv2), GRS/GZRS Yes Hayır
Premium dosya paylaşımları (filestorage), LRS/ZRS Yes Hayır

.NET API'lerini anlama

Azure Dosyaları istemci uygulamalarına iki geniş yaklaşım sağlar: Sunucu İleti Bloğu (SMB) ve REST. .NET içinde System.IO ve Azure.Storage.Files.Shares API'leri bu yaklaşımları soyutlar.

API ne zaman kullanılmalı Notlar
System.IO Uygulamanız:
  • SMB kullanarak dosyaları okuma/yazma gerekiyor
  • Azure Dosyaları hesabınıza 445 bağlantı noktası üzerinden erişimi olan bir cihazda çalışıyor
  • Dosya paylaşımının yönetim ayarlarından herhangi birini yönetmesi gerekmiyor
SMB üzerinden Azure Dosyalar uygulanan dosya G/Ç genellikle herhangi bir ağ dosya paylaşımında veya yerel depolama cihazında G/Ç ile aynıdır. .NET'te dosya G/Ç dahil olmak üzere çeşitli özelliklere giriş için Konsol Uygulaması öğreticisine bakın.
Azure.Storage.Files.Shares Uygulamanız:
  • Güvenlik duvarı veya ISS kısıtlamaları nedeniyle 445 numaralı bağlantı noktasında SMB kullanılarak Azure Dosyalar erişilemiyor
  • Bir dosya paylaşımının kotasını ayarlama veya paylaşılan bir erişim imzası oluşturma gibi yönetim işlevleri gerektiriyor
Bu makalede, SMB yerine REST kullanan dosya G/Ç kullanımı Azure.Storage.Files.Shares ve dosya paylaşımının yönetimi gösterilmektedir.

Konsol uygulaması oluşturma ve derleme alma

Azure Dosyalar istemci kitaplığını her tür .NET uygulamasında kullanabilirsiniz. Bu uygulamalar Azure bulutu, web, masaüstü ve mobil uygulamaları içerir. Bu kılavuzda kolaylık sağlamak için bir konsol uygulaması oluşturacağız.

Visual Studio'da yeni bir Windows konsol uygulaması oluşturun. Aşağıdaki adımlarda, Visual Studio 2019'da bir konsol uygulamasının nasıl oluşturulacağı gösterilmektedir. Adımlar Visual Studio’nun diğer sürümlerinde de benzerdir.

  1. Visual Studio'yu başlatın ve Yeni proje oluştur'u seçin.
  2. Yeni proje oluştur bölümünde C# için Konsol Uygulaması (.NET Framework) seçeneğini belirleyin ve ardından İleri'yi seçin.
  3. Yeni projenizi yapılandırın bölümünde uygulama için bir ad girin ve Oluştur'u seçin.

Bu makaledeki Program tüm kod örneklerini Program.cs dosyasındaki sınıfına ekleyin.

Gereken paketleri yüklemek için NuGet kullanma

Projenizdeki şu paketlere bakın:

  • .NET için Azure çekirdek kitaplığı: Bu paket, Azure istemci işlem hattının uygulamasıdır.
  • .NET için Azure Depolama Blobu istemci kitaplığı: Bu paket, depolama hesabınızdaki blob kaynaklarına programlı erişim sağlar.
  • .NET için Azure Depolama Dosyaları istemci kitaplığı: Bu paket, depolama hesabınızdaki dosya kaynaklarına programlı erişim sağlar.
  • .NET için System Configuration Manager kitaplığı: Bu paket, yapılandırma dosyasında değerleri depolayan ve alan bir sınıf sağlar.

Paketleri almak için NuGet kullanabilirsiniz. Şu adımları izleyin:

  1. Çözüm Gezgini'da projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.

  2. NuGet Paket Yöneticisi Gözat'ı seçin. Ardından Azure.Core'u arayıp seçin ve ardından Yükle'yi seçin.

    Bu adım paketi ve bağımlılıklarını yükler.

  3. Şu paketleri arayın ve yükleyin:

    • Azure.Storage.Blobs
    • Azure.Storage.Files.Shares
    • System.Configuration.ConfigurationManager

Depolama hesabı kimlik bilgilerinizi App.config dosyasına kaydetme

Ardından, kimlik bilgilerinizi projenizin App.config dosyasına kaydedin. Çözüm Gezgini'da, dosyaya çift tıklayın App.config ve aşağıdaki örneğe benzer şekilde düzenleyin.

değerini depolama hesabı adınız ve mykey depolama hesabı anahtarınız ile değiştirinmyaccount.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="StorageConnectionString" 
      value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net" />
    <add key="StorageAccountName" value="myaccount" />
    <add key="StorageAccountKey" value="mykey" />
  </appSettings>
</configuration>

Not

Azurite depolama öykünücüsü şu anda Azure Dosyalar desteklemez. bağlantı dizesi Azure Dosyalar çalışmak için buluttaki bir Azure depolama hesabını hedeflemelidir.

Using yönergeleri ekleme

Çözüm Gezgini Program.cs dosyasını açın ve dosyanın en üstüne aşağıdaki using yönergelerini ekleyin.

using System;
using System.Configuration;
using System.IO;
using System.Threading.Tasks;
using Azure;
using Azure.Storage;
using Azure.Storage.Blobs;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
using Azure.Storage.Sas;

Dosya paylaşımına programlamayla erişme

Program.cs dosyasında, dosya paylaşımına program aracılığıyla erişmek için aşağıdaki kodu ekleyin.

Aşağıdaki yöntem, henüz yoksa bir dosya paylaşımı oluşturur. yöntemi, bir bağlantı dizesi bir ShareClient nesnesi oluşturarak başlar. Örnek daha sonra daha önce oluşturduğumuz bir dosyayı indirmeye çalışır. 'den bu yöntemi çağır.Main()

//-------------------------------------------------
// Create a file share
//-------------------------------------------------
public async Task CreateShareAsync(string shareName)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instantiate a ShareClient which will be used to create and manipulate the file share
    ShareClient share = new ShareClient(connectionString, shareName);

    // Create the share if it doesn't already exist
    await share.CreateIfNotExistsAsync();

    // Ensure that the share exists
    if (await share.ExistsAsync())
    {
        Console.WriteLine($"Share created: {share.Name}");

        // Get a reference to the sample directory
        ShareDirectoryClient directory = share.GetDirectoryClient("CustomLogs");

        // Create the directory if it doesn't already exist
        await directory.CreateIfNotExistsAsync();

        // Ensure that the directory exists
        if (await directory.ExistsAsync())
        {
            // Get a reference to a file object
            ShareFileClient file = directory.GetFileClient("Log1.txt");

            // Ensure that the file exists
            if (await file.ExistsAsync())
            {
                Console.WriteLine($"File exists: {file.Name}");

                // Download the file
                ShareFileDownloadInfo download = await file.DownloadAsync();

                // Save the data to a local file, overwrite if the file already exists
                using (FileStream stream = File.OpenWrite(@"downloadedLog1.txt"))
                {
                    await download.Content.CopyToAsync(stream);
                    await stream.FlushAsync();
                    stream.Close();

                    // Display where the file was saved
                    Console.WriteLine($"File downloaded: {stream.Name}");
                }
            }
        }
    }
    else
    {
        Console.WriteLine($"CreateShareAsync failed");
    }
}

Dosya paylaşımı için boyut üst sınırını ayarlama

Azure Dosyalar istemci kitaplığının 5.x sürümünden başlayarak, dosya paylaşımı için kotayı (en büyük boyut) ayarlayabilirsiniz. Paylaşımda halihazırda ne kadar verinin depolandığını da kontrol edebilirsiniz.

Bir paylaşım için kotanın ayarlanması, paylaşımda depolanan dosyaların toplam boyutunu sınırlar. Paylaşımdaki dosyaların toplam boyutu kotayı aşarsa, istemciler mevcut dosyaların boyutunu artıramaz. İstemciler, bu dosyalar boş olmadığı sürece yeni dosyalar da oluşturamaz.

Aşağıdaki örnekte, paylaşımdaki mevcut kullanımını nasıl kontrol edileceği veya paylaşım için nasıl kota ayarlanacağı gösterilmiştir.

//-------------------------------------------------
// Set the maximum size of a share
//-------------------------------------------------
public async Task SetMaxShareSizeAsync(string shareName, int increaseSizeInGiB)
{
    const long ONE_GIBIBYTE = 10737420000; // Number of bytes in 1 gibibyte

    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instantiate a ShareClient which will be used to access the file share
    ShareClient share = new ShareClient(connectionString, shareName);

    // Create the share if it doesn't already exist
    await share.CreateIfNotExistsAsync();

    // Ensure that the share exists
    if (await share.ExistsAsync())
    {
        // Get and display current share quota
        ShareProperties properties = await share.GetPropertiesAsync();
        Console.WriteLine($"Current share quota: {properties.QuotaInGB} GiB");

        // Get and display current usage stats for the share
        ShareStatistics stats = await share.GetStatisticsAsync();
        Console.WriteLine($"Current share usage: {stats.ShareUsageInBytes} bytes");

        // Convert current usage from bytes into GiB
        int currentGiB = (int)(stats.ShareUsageInBytes / ONE_GIBIBYTE);

        // This line sets the quota to be the current 
        // usage of the share plus the increase amount
        await share.SetQuotaAsync(currentGiB + increaseSizeInGiB);

        // Get the new quota and display it
        properties = await share.GetPropertiesAsync();
        Console.WriteLine($"New share quota: {properties.QuotaInGB} GiB");
    }
}

Dosya veya dosya paylaşımı için paylaşılan erişim imzası oluşturma

Azure Dosyalar istemci kitaplığının 5.x sürümünden başlayarak, bir dosya paylaşımı veya tek bir dosya için paylaşılan erişim imzası (SAS) oluşturabilirsiniz.

Aşağıdaki örnek yöntem, belirtilen paylaşımdaki bir dosyada SAS döndürür.

//-------------------------------------------------
// Create a SAS URI for a file
//-------------------------------------------------
public Uri GetFileSasUri(string shareName, string filePath, DateTime expiration, ShareFileSasPermissions permissions)
{
    // Get the account details from app settings
    string accountName = ConfigurationManager.AppSettings["StorageAccountName"];
    string accountKey = ConfigurationManager.AppSettings["StorageAccountKey"];

    ShareSasBuilder fileSAS = new ShareSasBuilder()
    {
        ShareName = shareName,
        FilePath = filePath,

        // Specify an Azure file resource
        Resource = "f",

        // Expires in 24 hours
        ExpiresOn = expiration
    };

    // Set the permissions for the SAS
    fileSAS.SetPermissions(permissions);

    // Create a SharedKeyCredential that we can use to sign the SAS token
    StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);

    // Build a SAS URI
    UriBuilder fileSasUri = new UriBuilder($"https://{accountName}.file.core.windows.net/{fileSAS.ShareName}/{fileSAS.FilePath}");
    fileSasUri.Query = fileSAS.ToSasQueryParameters(credential).ToString();

    // Return the URI
    return fileSasUri.Uri;
}

Paylaşılan erişim imzaları oluşturma ve kullanma hakkında daha fazla bilgi için bkz . Paylaşılan erişim imzası nasıl çalışır?

Dosyaları kopyalama

Azure Dosyalar istemci kitaplığının 5.x sürümünden başlayarak, bir dosyayı başka bir dosyaya, bir dosyayı bloba veya blobu bir dosyaya kopyalayabilirsiniz.

AzCopy'yi bir dosyayı başka bir dosyaya kopyalamak veya blobu bir dosyaya veya başka bir yolla kopyalamak için de kullanabilirsiniz. Bkz. AzCopy ile çalışmaya başlama.

Not

Bir blobu bir dosyaya veya dosyayı bloba kopyalarken, aynı depolama hesabı içinde kopyalama işlemi gerçekleştiriyor olsanız bile kaynak nesneye erişimi yetkilendirmek için paylaşılan erişim imzası (SAS) kullanmanız gerekir.

Dosyayı başka bir dosyaya kopyalama

Aşağıdaki örnekte, bir dosya aynı paylaşımdaki başka bir dosyaya kopyalanır. Bu işlem aynı depolama hesabındaki dosyaları kopyaladığı için, kopyayı yapmak için Paylaşılan Anahtar kimlik doğrulamasını kullanabilirsiniz.

//-------------------------------------------------
// Copy file within a directory
//-------------------------------------------------
public async Task CopyFileAsync(string shareName, string sourceFilePath, string destFilePath)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Get a reference to the file we created previously
    ShareFileClient sourceFile = new ShareFileClient(connectionString, shareName, sourceFilePath);

    // Ensure that the source file exists
    if (await sourceFile.ExistsAsync())
    {
        // Get a reference to the destination file
        ShareFileClient destFile = new ShareFileClient(connectionString, shareName, destFilePath);

        // Start the copy operation
        await destFile.StartCopyAsync(sourceFile.Uri);

        if (await destFile.ExistsAsync())
        {
            Console.WriteLine($"{sourceFile.Uri} copied to {destFile.Uri}");
        }
    }
}

Dosyayı bir bloba kopyalama

Aşağıdaki örnekte, bir dosya oluşturulur ve aynı depolama hesabındaki bir bloba kopyalanır. Örnekte, kaynak dosya için hizmetin kopyalama sırasında kaynak dosyaya erişimi yetkilendirmek üzere kullandığı bir SAS oluşturulur.

//-------------------------------------------------
// Copy a file from a share to a blob
//-------------------------------------------------
public async Task CopyFileToBlobAsync(string shareName, string sourceFilePath, string containerName, string blobName)
{
    // Get a file SAS from the method created ealier
    Uri fileSasUri = GetFileSasUri(shareName, sourceFilePath, DateTime.UtcNow.AddHours(24), ShareFileSasPermissions.Read);

    // Get a reference to the file we created previously
    ShareFileClient sourceFile = new ShareFileClient(fileSasUri);

    // Ensure that the source file exists
    if (await sourceFile.ExistsAsync())
    {
        // Get the connection string from app settings
        string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

        // Get a reference to the destination container
        BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

        // Create the container if it doesn't already exist
        await container.CreateIfNotExistsAsync();

        BlobClient destBlob = container.GetBlobClient(blobName);

        await destBlob.StartCopyFromUriAsync(sourceFile.Uri);

        if (await destBlob.ExistsAsync())
        {
            Console.WriteLine($"File {sourceFile.Name} copied to blob {destBlob.Name}");
        }
    }
}

Aynı şekilde, bir blobu bir dosyaya kopyalayabilirsiniz. Kaynak dosya bir blob ise, kopyalama sırasında bu bloba erişimi yetkilendirmesi için bir SAS oluşturun.

Anlık görüntüleri paylaşma

Azure Dosyalar istemci kitaplığının 8.5 sürümünden başlayarak bir paylaşım anlık görüntüsü oluşturabilirsiniz. Ayrıca paylaşım anlık görüntülerini listeleyebilir, onlara göz atabilir ve paylaşım anlık görüntülerini silebilirsiniz. Oluşturulduktan sonra paylaşım anlık görüntüleri salt okunur olur.

Paylaşım anlık görüntüsü oluşturma

Aşağıdaki örnekte dosya paylaşım anlık görüntüsü oluşturulmaktadır.

//-------------------------------------------------
// Create a share snapshot
//-------------------------------------------------
public async Task CreateShareSnapshotAsync(string shareName)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareServiceClient = new ShareServiceClient(connectionString);

    // Instantiate a ShareClient which will be used to access the file share
    ShareClient share = shareServiceClient.GetShareClient(shareName);

    // Ensure that the share exists
    if (await share.ExistsAsync())
    {
        // Create a snapshot
        ShareSnapshotInfo snapshotInfo = await share.CreateSnapshotAsync();
        Console.WriteLine($"Snapshot created: {snapshotInfo.Snapshot}");
    }
}

Paylaşım anlık görüntülerini listeleme

Aşağıdaki örnek, paylaşımdaki anlık görüntüleri listeler.

//-------------------------------------------------
// List the snapshots on a share
//-------------------------------------------------
public void ListShareSnapshots()
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareServiceClient = new ShareServiceClient(connectionString);

    // Display each share and the snapshots on each share
    foreach (ShareItem item in shareServiceClient.GetShares(ShareTraits.All, ShareStates.Snapshots))
    {
        if (null != item.Snapshot)
        {
            Console.WriteLine($"Share: {item.Name}\tSnapshot: {item.Snapshot}");
        }
    }
}

Paylaşım anlık görüntüleri içindeki dosyaları ve dizinleri listeleme

Aşağıdaki örnek, paylaşım anlık görüntüleri içindeki dosyalara ve dizinlere göz atar.

//-------------------------------------------------
// List the snapshots on a share
//-------------------------------------------------
public void ListSnapshotContents(string shareName, string snapshotTime)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareService = new ShareServiceClient(connectionString);

    // Get a ShareClient
    ShareClient share = shareService.GetShareClient(shareName);

    Console.WriteLine($"Share: {share.Name}");

    // Get as ShareClient that points to a snapshot
    ShareClient snapshot = share.WithSnapshot(snapshotTime);

    // Get the root directory in the snapshot share
    ShareDirectoryClient rootDir = snapshot.GetRootDirectoryClient();

    // Recursively list the directory tree
    ListDirTree(rootDir);
}

//-------------------------------------------------
// Recursively list a directory tree
//-------------------------------------------------
public void ListDirTree(ShareDirectoryClient dir)
{
    // List the files and directories in the snapshot
    foreach (ShareFileItem item in dir.GetFilesAndDirectories())
    {
        if (item.IsDirectory)
        {
            Console.WriteLine($"Directory: {item.Name}");
            ShareDirectoryClient subDir = dir.GetSubdirectoryClient(item.Name);
            ListDirTree(subDir);
        }
        else
        {
            Console.WriteLine($"File: {dir.Name}\\{item.Name}");
        }
    }
}

Paylaşım anlık görüntülerinden dosya paylaşımlarını veya dosyaları geri yükleme

Dosya paylaşımının anlık görüntüsünü almak, tek tek dosyaları veya dosya paylaşımının tamamını kurtarmanızı sağlar.

Bir dosya paylaşımının paylaşım anlık görüntülerini sorgulayarak bir dosya paylaşım anlık görüntüsündeki dosyayı geri yükleyebilirsiniz. Daha sonra belirli bir paylaşım anlık görüntüsüne ait bir dosyayı alabilirsiniz. Doğrudan okumak veya dosyayı geri yüklemek için bu sürümü kullanın.

//-------------------------------------------------
// Restore file from snapshot
//-------------------------------------------------
public async Task RestoreFileFromSnapshot(string shareName, string directoryName, string fileName, string snapshotTime)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareService = new ShareServiceClient(connectionString);

    // Get a ShareClient
    ShareClient share = shareService.GetShareClient(shareName);

    // Get as ShareClient that points to a snapshot
    ShareClient snapshot = share.WithSnapshot(snapshotTime);

    // Get a ShareDirectoryClient, then a ShareFileClient to the snapshot file
    ShareDirectoryClient snapshotDir = snapshot.GetDirectoryClient(directoryName);
    ShareFileClient snapshotFile = snapshotDir.GetFileClient(fileName);

    // Get a ShareDirectoryClient, then a ShareFileClient to the live file
    ShareDirectoryClient liveDir = share.GetDirectoryClient(directoryName);
    ShareFileClient liveFile = liveDir.GetFileClient(fileName);

    // Restore the file from the snapshot
    ShareFileCopyInfo copyInfo = await liveFile.StartCopyAsync(snapshotFile.Uri);

    // Display the status of the operation
    Console.WriteLine($"Restore status: {copyInfo.CopyStatus}");
}

Paylaşım anlık görüntülerini silme

Aşağıdaki örnekte dosya paylaşım anlık görüntüsü silinmektedir.

//-------------------------------------------------
// Delete a snapshot
//-------------------------------------------------
public async Task DeleteSnapshotAsync(string shareName, string snapshotTime)
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareService = new ShareServiceClient(connectionString);

    // Get a ShareClient
    ShareClient share = shareService.GetShareClient(shareName);

    // Get a ShareClient that points to a snapshot
    ShareClient snapshotShare = share.WithSnapshot(snapshotTime);

    try
    {
        // Delete the snapshot
        await snapshotShare.DeleteIfExistsAsync();
    }
    catch (RequestFailedException ex)
    {
        Console.WriteLine($"Exception: {ex.Message}");
        Console.WriteLine($"Error code: {ex.Status}\t{ex.ErrorCode}");
    }
}

Ölçümleri kullanarak Azure Dosyalar sorunlarını giderme

Azure Depolama Analizi Azure Dosyalar için ölçümleri destekler. Ölçüm verilerini kullanarak istekleri ve tanılama sorunlarını izleyebilirsiniz.

Azure portalından Azure Dosyalar için ölçümleri etkinleştirebilirsiniz. Ayrıca REST API ile Dosya Hizmeti Özelliklerini Ayarla işlemini veya Azure Dosyalar istemci kitaplığındaki analoglarından birini çağırarak ölçümleri program aracılığıyla etkinleştirebilirsiniz.

Aşağıdaki kod örneği, Azure Dosyalar için ölçümleri etkinleştirmek üzere .NET istemci kitaplığının nasıl kullanılacağını gösterir.

//-------------------------------------------------
// Use metrics
//-------------------------------------------------
public async Task UseMetricsAsync()
{
    // Get the connection string from app settings
    string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

    // Instatiate a ShareServiceClient
    ShareServiceClient shareService = new ShareServiceClient(connectionString);

    // Set metrics properties for File service
    await shareService.SetPropertiesAsync(new ShareServiceProperties()
    {
        // Set hour metrics
        HourMetrics = new ShareMetrics()
        {
            Enabled = true,
            IncludeApis = true,
            Version = "1.0",

            RetentionPolicy = new ShareRetentionPolicy()
            {
                Enabled = true,
                Days = 14
            }
        },

        // Set minute metrics
        MinuteMetrics = new ShareMetrics()
        {
            Enabled = true,
            IncludeApis = true,
            Version = "1.0",

            RetentionPolicy = new ShareRetentionPolicy()
            {
                Enabled = true,
                Days = 7
            }
        }
    });

    // Read the metrics properties we just set
    ShareServiceProperties serviceProperties = await shareService.GetPropertiesAsync();

    // Display the properties
    Console.WriteLine();
    Console.WriteLine($"HourMetrics.InludeApis: {serviceProperties.HourMetrics.IncludeApis}");
    Console.WriteLine($"HourMetrics.RetentionPolicy.Days: {serviceProperties.HourMetrics.RetentionPolicy.Days}");
    Console.WriteLine($"HourMetrics.Version: {serviceProperties.HourMetrics.Version}");
    Console.WriteLine();
    Console.WriteLine($"MinuteMetrics.InludeApis: {serviceProperties.MinuteMetrics.IncludeApis}");
    Console.WriteLine($"MinuteMetrics.RetentionPolicy.Days: {serviceProperties.MinuteMetrics.RetentionPolicy.Days}");
    Console.WriteLine($"MinuteMetrics.Version: {serviceProperties.MinuteMetrics.Version}");
    Console.WriteLine();
}

Herhangi bir sorunla karşılaşırsanız Azure Dosyalar sorunlarını giderme bölümüne bakın.

Sonraki adımlar

Azure Dosyalar hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Kullanım dışı bırakılan .NET sürüm 11.x SDK'larını kullanan ilgili kod örnekleri için bkz . .NET sürüm 11.x kullanan kod örnekleri.