<PackageReference Include="Azure.Storage.Blobs" Version="12.24.0-beta.1" />

BlobContainerClient

public class BlobContainerClient
The BlobContainerClient allows you to manipulate Azure Storage containers and their blobs.
using Azure.Core; using Azure.Core.Pipeline; using Azure.Storage.Blobs.Models; using Azure.Storage.Blobs.Specialized; using Azure.Storage.Common; using Azure.Storage.Cryptography; using Azure.Storage.Sas; using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Azure.Storage.Blobs { public class BlobContainerClient { public static readonly string RootBlobContainerName = "$root"; public static readonly string LogsBlobContainerName = "$logs"; public static readonly string WebBlobContainerName = "$web"; private readonly Uri _uri; private readonly BlobClientConfiguration _clientConfiguration; private readonly HttpPipelinePolicy _authenticationPolicy; private readonly ClientSideEncryptionOptions _clientSideEncryption; private string _accountName; private string _name; private readonly ContainerRestClient _containerRestClient; private BlobServiceClient _parentBlobServiceClient; public virtual Uri Uri => _uri; internal virtual BlobClientConfiguration ClientConfiguration => _clientConfiguration; internal virtual HttpPipelinePolicy AuthenticationPolicy => _authenticationPolicy; internal virtual ClientSideEncryptionOptions ClientSideEncryption => _clientSideEncryption; public virtual string AccountName { get { SetNameFieldsIfNull(); return _accountName; } } public virtual string Name { get { SetNameFieldsIfNull(); return _name; } } public virtual bool CanGenerateSasUri => (object)ClientConfiguration.SharedKeyCredential != null; internal virtual ContainerRestClient ContainerRestClient => _containerRestClient; protected BlobContainerClient() { } public BlobContainerClient(string connectionString, string blobContainerName) : this(connectionString, blobContainerName, null) { } public BlobContainerClient(string connectionString, string blobContainerName, BlobClientOptions options) { Argument.AssertNotNullOrWhiteSpace(blobContainerName, "blobContainerName"); StorageConnectionString storageConnectionString = StorageConnectionString.Parse(connectionString); BlobUriBuilder blobUriBuilder = new BlobUriBuilder(storageConnectionString.BlobEndpoint, options?.TrimBlobNameSlashes ?? true) { BlobContainerName = blobContainerName }; _uri = blobUriBuilder.ToUri(); if (options == null) options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05); _clientConfiguration = new BlobClientConfiguration(options.Build(storageConnectionString.Credentials), storageConnectionString.Credentials as StorageSharedKeyCredential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes); _authenticationPolicy = StorageClientOptions.GetAuthenticationPolicy(storageConnectionString.Credentials, null, null); ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions; _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null); _containerRestClient = BuildContainerRestClient(_uri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } public BlobContainerClient(Uri blobContainerUri, BlobClientOptions options = null) { Argument.AssertNotNull(blobContainerUri, "blobContainerUri"); _uri = blobContainerUri; _authenticationPolicy = null; if (options == null) options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05); _clientConfiguration = new BlobClientConfiguration(options.Build(null), null, null, null, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes); ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions; _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null); _containerRestClient = BuildContainerRestClient(blobContainerUri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } public BlobContainerClient(Uri blobContainerUri, StorageSharedKeyCredential credential, BlobClientOptions options = null) { Argument.AssertNotNull(blobContainerUri, "blobContainerUri"); HttpPipelinePolicy val = credential.AsPolicy(); _uri = blobContainerUri; _authenticationPolicy = val; if (options == null) options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05); _clientConfiguration = new BlobClientConfiguration(options.Build(val), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes); ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions; _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null); _containerRestClient = BuildContainerRestClient(blobContainerUri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } public BlobContainerClient(Uri blobContainerUri, AzureSasCredential credential, BlobClientOptions options = null) { Argument.AssertNotNull(blobContainerUri, "blobContainerUri"); _uri = blobContainerUri; _authenticationPolicy = credential.AsPolicy<BlobUriBuilder>(blobContainerUri); if (options == null) options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05); _clientConfiguration = new BlobClientConfiguration(options.Build(_authenticationPolicy), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes); ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions; _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null); _containerRestClient = BuildContainerRestClient(blobContainerUri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } public BlobContainerClient(Uri blobContainerUri, TokenCredential credential, BlobClientOptions options = null) { Errors.VerifyHttpsTokenAuth(blobContainerUri); Argument.AssertNotNull(blobContainerUri, "blobContainerUri"); _uri = blobContainerUri; object value; BlobAudience? audience; BlobAudience blobAudience; if (options == null) value = null; else { audience = options.Audience; if (!audience.HasValue) value = null; else { blobAudience = audience.GetValueOrDefault(); value = blobAudience.ToString(); } } object text; if (!string.IsNullOrEmpty((string)value)) { audience = options.Audience; blobAudience = audience.Value; text = blobAudience.CreateDefaultScope(); } else { blobAudience = BlobAudience.DefaultAudience; text = blobAudience.CreateDefaultScope(); } string scope = (string)text; _authenticationPolicy = credential.AsPolicy(scope, options); if (options == null) options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05); _clientConfiguration = new BlobClientConfiguration(options.Build(_authenticationPolicy), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes); ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions; _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null); _containerRestClient = BuildContainerRestClient(blobContainerUri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } internal BlobContainerClient(Uri containerUri, BlobClientConfiguration clientConfiguration, ClientSideEncryptionOptions clientSideEncryption) { _uri = containerUri; _clientConfiguration = clientConfiguration; _authenticationPolicy = StorageClientOptions.GetAuthenticationPolicy((object)_clientConfiguration.SharedKeyCredential, null, null); _clientSideEncryption = ((clientSideEncryption != null) ? clientSideEncryption.Clone() : null); _containerRestClient = BuildContainerRestClient(containerUri); BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey); BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope); } protected static BlobContainerClient CreateClient(Uri containerUri, BlobClientOptions options, HttpPipeline pipeline) { return new BlobContainerClient(containerUri, new BlobClientConfiguration(pipeline, null, new ClientDiagnostics(options, null), options.Version, (CustomerProvidedKey?)null, options.TransferValidation, (string)null, options.TrimBlobNameSlashes), null); } private ContainerRestClient BuildContainerRestClient(Uri containerUri) { return new ContainerRestClient(_clientConfiguration.ClientDiagnostics, _clientConfiguration.Pipeline, containerUri.AbsoluteUri, _clientConfiguration.Version.ToVersionString()); } protected internal virtual BlobBaseClient GetBlobBaseClientCore(string blobName) { Argument.AssertNotNullOrEmpty(blobName, "blobName"); return new BlobBaseClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobName = blobName }.ToUri(), ClientConfiguration, ClientSideEncryption); } public virtual BlobClient GetBlobClient(string blobName) { Argument.AssertNotNullOrEmpty(blobName, "blobName"); return new BlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobName = blobName }.ToUri(), ClientConfiguration, ClientSideEncryption); } protected internal virtual BlockBlobClient GetBlockBlobClientCore(string blobName) { Argument.AssertNotNullOrEmpty(blobName, "blobName"); if ((object)ClientSideEncryption != null) throw Errors.ClientSideEncryption.TypeNotSupported(typeof(BlockBlobClient)); return new BlockBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobName = blobName }.ToUri(), ClientConfiguration); } protected internal virtual AppendBlobClient GetAppendBlobClientCore(string blobName) { Argument.AssertNotNullOrEmpty(blobName, "blobName"); if ((object)ClientSideEncryption != null) throw Errors.ClientSideEncryption.TypeNotSupported(typeof(AppendBlobClient)); return new AppendBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobName = blobName }.ToUri(), ClientConfiguration); } protected internal virtual PageBlobClient GetPageBlobClientCore(string blobName) { Argument.AssertNotNullOrEmpty(blobName, "blobName"); if ((object)ClientSideEncryption != null) throw Errors.ClientSideEncryption.TypeNotSupported(typeof(PageBlobClient)); return new PageBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobName = blobName }.ToUri(), ClientConfiguration); } protected internal virtual BlobLeaseClient GetBlobLeaseClientCore(string leaseId) { return new BlobLeaseClient(this, leaseId); } private void SetNameFieldsIfNull() { if (_name == null || _accountName == null) { BlobUriBuilder blobUriBuilder = new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes); _name = blobUriBuilder.BlobContainerName; _accountName = blobUriBuilder.AccountName; } } public virtual Response<BlobContainerInfo> Create(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { return CreateInternal(publicAccessType, metadata, encryptionScopeOptions, false, cancellationToken, null).EnsureCompleted(); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual Response<BlobContainerInfo> Create(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken) { return CreateInternal(publicAccessType, metadata, null, false, cancellationToken, null).EnsureCompleted(); } [AsyncStateMachine(typeof(<CreateAsync>d__45))] public virtual Task<Response<BlobContainerInfo>> CreateAsync(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { <CreateAsync>d__45 stateMachine = default(<CreateAsync>d__45); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.encryptionScopeOptions = encryptionScopeOptions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CreateAsync>d__46))] [EditorBrowsable(EditorBrowsableState.Never)] public virtual Task<Response<BlobContainerInfo>> CreateAsync(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken) { <CreateAsync>d__46 stateMachine = default(<CreateAsync>d__46); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContainerInfo> CreateIfNotExists(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { return CreateIfNotExistsInternal(publicAccessType, metadata, encryptionScopeOptions, false, cancellationToken).EnsureCompleted(); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual Response<BlobContainerInfo> CreateIfNotExists(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken) { return CreateIfNotExistsInternal(publicAccessType, metadata, null, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<CreateIfNotExistsAsync>d__49))] public virtual Task<Response<BlobContainerInfo>> CreateIfNotExistsAsync(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { <CreateIfNotExistsAsync>d__49 stateMachine = default(<CreateIfNotExistsAsync>d__49); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.encryptionScopeOptions = encryptionScopeOptions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CreateIfNotExistsAsync>d__50))] [EditorBrowsable(EditorBrowsableState.Never)] public virtual Task<Response<BlobContainerInfo>> CreateIfNotExistsAsync(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken) { <CreateIfNotExistsAsync>d__50 stateMachine = default(<CreateIfNotExistsAsync>d__50); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CreateIfNotExistsInternal>d__51))] private Task<Response<BlobContainerInfo>> CreateIfNotExistsInternal(PublicAccessType publicAccessType, IDictionary<string, string> metadata, BlobContainerEncryptionScopeOptions encryptionScopeOptions, bool async, CancellationToken cancellationToken) { <CreateIfNotExistsInternal>d__51 stateMachine = default(<CreateIfNotExistsInternal>d__51); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.encryptionScopeOptions = encryptionScopeOptions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CreateInternal>d__52))] private Task<Response<BlobContainerInfo>> CreateInternal(PublicAccessType publicAccessType, IDictionary<string, string> metadata, BlobContainerEncryptionScopeOptions encryptionScopeOptions, bool async, CancellationToken cancellationToken, string operationName = null) { <CreateInternal>d__52 stateMachine = default(<CreateInternal>d__52); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.publicAccessType = publicAccessType; stateMachine.metadata = metadata; stateMachine.encryptionScopeOptions = encryptionScopeOptions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response Delete(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return DeleteInternal(conditions, false, cancellationToken, null).EnsureCompleted(); } [AsyncStateMachine(typeof(<DeleteAsync>d__54))] public virtual Task<Response> DeleteAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <DeleteAsync>d__54 stateMachine = default(<DeleteAsync>d__54); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<bool> DeleteIfExists(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return DeleteIfExistsInternal(conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<DeleteIfExistsAsync>d__56))] public virtual Task<Response<bool>> DeleteIfExistsAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <DeleteIfExistsAsync>d__56 stateMachine = default(<DeleteIfExistsAsync>d__56); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<DeleteIfExistsInternal>d__57))] private Task<Response<bool>> DeleteIfExistsInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken) { <DeleteIfExistsInternal>d__57 stateMachine = default(<DeleteIfExistsInternal>d__57); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<DeleteInternal>d__58))] private Task<Response> DeleteInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken, string operationName = null) { <DeleteInternal>d__58 stateMachine = default(<DeleteInternal>d__58); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<bool> Exists(CancellationToken cancellationToken = default(CancellationToken)) { return ExistsInternal(false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<ExistsAsync>d__60))] public virtual Task<Response<bool>> ExistsAsync(CancellationToken cancellationToken = default(CancellationToken)) { <ExistsAsync>d__60 stateMachine = default(<ExistsAsync>d__60); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create(); stateMachine.<>4__this = this; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<ExistsInternal>d__61))] private Task<Response<bool>> ExistsInternal(bool async, CancellationToken cancellationToken) { <ExistsInternal>d__61 stateMachine = default(<ExistsInternal>d__61); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create(); stateMachine.<>4__this = this; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContainerProperties> GetProperties(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return GetPropertiesInternal(conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<GetPropertiesAsync>d__63))] public virtual Task<Response<BlobContainerProperties>> GetPropertiesAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <GetPropertiesAsync>d__63 stateMachine = default(<GetPropertiesAsync>d__63); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerProperties>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<GetPropertiesInternal>d__64))] private Task<Response<BlobContainerProperties>> GetPropertiesInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken) { <GetPropertiesInternal>d__64 stateMachine = default(<GetPropertiesInternal>d__64); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerProperties>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContainerInfo> SetMetadata(IDictionary<string, string> metadata, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return SetMetadataInternal(metadata, conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<SetMetadataAsync>d__66))] public virtual Task<Response<BlobContainerInfo>> SetMetadataAsync(IDictionary<string, string> metadata, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <SetMetadataAsync>d__66 stateMachine = default(<SetMetadataAsync>d__66); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.metadata = metadata; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<SetMetadataInternal>d__67))] private Task<Response<BlobContainerInfo>> SetMetadataInternal(IDictionary<string, string> metadata, BlobRequestConditions conditions, bool async, CancellationToken cancellationToken) { <SetMetadataInternal>d__67 stateMachine = default(<SetMetadataInternal>d__67); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.metadata = metadata; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobContainerAccessPolicy> GetAccessPolicy(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return GetAccessPolicyInternal(conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<GetAccessPolicyAsync>d__69))] public virtual Task<Response<BlobContainerAccessPolicy>> GetAccessPolicyAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <GetAccessPolicyAsync>d__69 stateMachine = default(<GetAccessPolicyAsync>d__69); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerAccessPolicy>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<GetAccessPolicyInternal>d__70))] private Task<Response<BlobContainerAccessPolicy>> GetAccessPolicyInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken) { <GetAccessPolicyInternal>d__70 stateMachine = default(<GetAccessPolicyInternal>d__70); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerAccessPolicy>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Response<BlobContainerInfo> SetAccessPolicy(PublicAccessType accessType = PublicAccessType.None, IEnumerable<BlobSignedIdentifier> permissions = null, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return SetAccessPolicyInternal(accessType, permissions, conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<SetAccessPolicyAsync>d__72))] [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Task<Response<BlobContainerInfo>> SetAccessPolicyAsync(PublicAccessType accessType = PublicAccessType.None, IEnumerable<BlobSignedIdentifier> permissions = null, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <SetAccessPolicyAsync>d__72 stateMachine = default(<SetAccessPolicyAsync>d__72); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.accessType = accessType; stateMachine.permissions = permissions; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<SetAccessPolicyInternal>d__73))] private Task<Response<BlobContainerInfo>> SetAccessPolicyInternal(PublicAccessType accessType, IEnumerable<BlobSignedIdentifier> permissions, BlobRequestConditions conditions, bool async, CancellationToken cancellationToken) { <SetAccessPolicyInternal>d__73 stateMachine = default(<SetAccessPolicyInternal>d__73); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.accessType = accessType; stateMachine.permissions = permissions; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Pageable<BlobItem> GetBlobs(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken)) { return new GetBlobsAsyncCollection(this, traits, states, prefix).ToSyncCollection(cancellationToken); } public virtual AsyncPageable<BlobItem> GetBlobsAsync(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken)) { return new GetBlobsAsyncCollection(this, traits, states, prefix).ToAsyncCollection(cancellationToken); } [AsyncStateMachine(typeof(<GetBlobsInternal>d__76))] internal Task<Response<ListBlobsFlatSegmentResponse>> GetBlobsInternal(string marker, BlobTraits traits, BlobStates states, string prefix, int? pageSizeHint, bool async, CancellationToken cancellationToken) { <GetBlobsInternal>d__76 stateMachine = default(<GetBlobsInternal>d__76); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ListBlobsFlatSegmentResponse>>.Create(); stateMachine.<>4__this = this; stateMachine.marker = marker; stateMachine.traits = traits; stateMachine.states = states; stateMachine.prefix = prefix; stateMachine.pageSizeHint = pageSizeHint; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Pageable<BlobHierarchyItem> GetBlobsByHierarchy(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string delimiter = null, string prefix = null, CancellationToken cancellationToken = default(CancellationToken)) { return new GetBlobsByHierarchyAsyncCollection(this, delimiter, traits, states, prefix).ToSyncCollection(cancellationToken); } public virtual AsyncPageable<BlobHierarchyItem> GetBlobsByHierarchyAsync(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string delimiter = null, string prefix = null, CancellationToken cancellationToken = default(CancellationToken)) { return new GetBlobsByHierarchyAsyncCollection(this, delimiter, traits, states, prefix).ToAsyncCollection(cancellationToken); } [AsyncStateMachine(typeof(<GetBlobsByHierarchyInternal>d__79))] internal Task<Response<ListBlobsHierarchySegmentResponse>> GetBlobsByHierarchyInternal(string marker, string delimiter, BlobTraits traits, BlobStates states, string prefix, int? pageSizeHint, bool async, CancellationToken cancellationToken) { <GetBlobsByHierarchyInternal>d__79 stateMachine = default(<GetBlobsByHierarchyInternal>d__79); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ListBlobsHierarchySegmentResponse>>.Create(); stateMachine.<>4__this = this; stateMachine.marker = marker; stateMachine.delimiter = delimiter; stateMachine.traits = traits; stateMachine.states = states; stateMachine.prefix = prefix; stateMachine.pageSizeHint = pageSizeHint; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] public virtual Response<BlobContentInfo> UploadBlob(string blobName, Stream content, CancellationToken cancellationToken = default(CancellationToken)) { return GetBlobClient(blobName).Upload(content, cancellationToken); } [AsyncStateMachine(typeof(<UploadBlobAsync>d__81))] [ForwardsClientCalls] public virtual Task<Response<BlobContentInfo>> UploadBlobAsync(string blobName, Stream content, CancellationToken cancellationToken = default(CancellationToken)) { <UploadBlobAsync>d__81 stateMachine = default(<UploadBlobAsync>d__81); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.blobName = blobName; stateMachine.content = content; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] public virtual Response<BlobContentInfo> UploadBlob(string blobName, BinaryData content, CancellationToken cancellationToken = default(CancellationToken)) { return GetBlobClient(blobName).Upload(content, cancellationToken); } [AsyncStateMachine(typeof(<UploadBlobAsync>d__83))] [ForwardsClientCalls] public virtual Task<Response<BlobContentInfo>> UploadBlobAsync(string blobName, BinaryData content, CancellationToken cancellationToken = default(CancellationToken)) { <UploadBlobAsync>d__83 stateMachine = default(<UploadBlobAsync>d__83); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.blobName = blobName; stateMachine.content = content; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] public virtual Response DeleteBlob(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return GetBlobClient(blobName).Delete(snapshotsOption, conditions, cancellationToken); } [AsyncStateMachine(typeof(<DeleteBlobAsync>d__85))] [ForwardsClientCalls] public virtual Task<Response> DeleteBlobAsync(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <DeleteBlobAsync>d__85 stateMachine = default(<DeleteBlobAsync>d__85); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create(); stateMachine.<>4__this = this; stateMachine.blobName = blobName; stateMachine.snapshotsOption = snapshotsOption; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [ForwardsClientCalls] public virtual Response<bool> DeleteBlobIfExists(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return GetBlobClient(blobName).DeleteIfExists(snapshotsOption, conditions ?? null, cancellationToken); } [AsyncStateMachine(typeof(<DeleteBlobIfExistsAsync>d__87))] [ForwardsClientCalls] public virtual Task<Response<bool>> DeleteBlobIfExistsAsync(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <DeleteBlobIfExistsAsync>d__87 stateMachine = default(<DeleteBlobIfExistsAsync>d__87); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create(); stateMachine.<>4__this = this; stateMachine.blobName = blobName; stateMachine.snapshotsOption = snapshotsOption; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } internal virtual Response<BlobContainerClient> Rename(string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return RenameInternal(destinationContainerName, sourceConditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<RenameAsync>d__89))] internal virtual Task<Response<BlobContainerClient>> RenameAsync(string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <RenameAsync>d__89 stateMachine = default(<RenameAsync>d__89); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create(); stateMachine.<>4__this = this; stateMachine.destinationContainerName = destinationContainerName; stateMachine.sourceConditions = sourceConditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<RenameInternal>d__90))] internal Task<Response<BlobContainerClient>> RenameInternal(string destinationContainerName, BlobRequestConditions sourceConditions, bool async, CancellationToken cancellationToken) { <RenameInternal>d__90 stateMachine = default(<RenameInternal>d__90); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create(); stateMachine.<>4__this = this; stateMachine.destinationContainerName = destinationContainerName; stateMachine.sourceConditions = sourceConditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Pageable<TaggedBlobItem> FindBlobsByTags(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken)) { return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToSyncCollection(cancellationToken); } public virtual AsyncPageable<TaggedBlobItem> FindBlobsByTagsAsync(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken)) { return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToAsyncCollection(cancellationToken); } [AsyncStateMachine(typeof(<FindBlobsByTagsInternal>d__93))] internal Task<Response<FilterBlobSegment>> FindBlobsByTagsInternal(string marker, string expression, int? pageSizeHint, bool async, CancellationToken cancellationToken) { <FindBlobsByTagsInternal>d__93 stateMachine = default(<FindBlobsByTagsInternal>d__93); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<FilterBlobSegment>>.Create(); stateMachine.<>4__this = this; stateMachine.marker = marker; stateMachine.expression = expression; stateMachine.pageSizeHint = pageSizeHint; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<AccountInfo> GetAccountInfo(CancellationToken cancellationToken = default(CancellationToken)) { return GetAccountInfoInternal(false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<GetAccountInfoAsync>d__95))] public virtual Task<Response<AccountInfo>> GetAccountInfoAsync(CancellationToken cancellationToken = default(CancellationToken)) { <GetAccountInfoAsync>d__95 stateMachine = default(<GetAccountInfoAsync>d__95); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<GetAccountInfoInternal>d__96))] private Task<Response<AccountInfo>> GetAccountInfoInternal(bool async, CancellationToken cancellationToken) { <GetAccountInfoInternal>d__96 stateMachine = default(<GetAccountInfoInternal>d__96); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn) { string stringToSign; return GenerateSasUri(permissions, expiresOn, out stringToSign); } [EditorBrowsable(EditorBrowsableState.Never)] [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, out string stringToSign) { return GenerateSasUri(new BlobSasBuilder(permissions, expiresOn) { BlobContainerName = Name }, out stringToSign); } [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateSasUri(BlobSasBuilder builder) { string stringToSign; return GenerateSasUri(builder, out stringToSign); } [EditorBrowsable(EditorBrowsableState.Never)] [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateSasUri(BlobSasBuilder builder, out string stringToSign) { BlobSasBuilder blobSasBuilder = builder; if (blobSasBuilder == null) throw Errors.ArgumentNull("builder"); builder = blobSasBuilder; builder = BlobSasBuilder.DeepCopy(builder); SetBuilderAndValidate(builder); return new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { Sas = builder.ToSasQueryParameters(ClientConfiguration.SharedKeyCredential, out stringToSign) }.ToUri(); } [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateUserDelegationSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, UserDelegationKey userDelegationKey) { string stringToSign; return GenerateUserDelegationSasUri(permissions, expiresOn, userDelegationKey, out stringToSign); } [EditorBrowsable(EditorBrowsableState.Never)] [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateUserDelegationSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, UserDelegationKey userDelegationKey, out string stringToSign) { return GenerateUserDelegationSasUri(new BlobSasBuilder(permissions, expiresOn) { BlobContainerName = Name }, userDelegationKey, out stringToSign); } [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateUserDelegationSasUri(BlobSasBuilder builder, UserDelegationKey userDelegationKey) { string stringToSign; return GenerateUserDelegationSasUri(builder, userDelegationKey, out stringToSign); } [EditorBrowsable(EditorBrowsableState.Never)] [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")] public virtual Uri GenerateUserDelegationSasUri(BlobSasBuilder builder, UserDelegationKey userDelegationKey, out string stringToSign) { BlobSasBuilder blobSasBuilder = builder; if (blobSasBuilder == null) throw Errors.ArgumentNull("builder"); builder = blobSasBuilder; UserDelegationKey userDelegationKey2 = userDelegationKey; if (userDelegationKey2 == null) throw Errors.ArgumentNull("userDelegationKey"); userDelegationKey = userDelegationKey2; builder = BlobSasBuilder.DeepCopy(builder); SetBuilderAndValidate(builder); if (string.IsNullOrEmpty(AccountName)) throw Errors.SasClientMissingData("AccountName"); return new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { Sas = builder.ToSasQueryParameters(userDelegationKey, AccountName, out stringToSign) }.ToUri(); } protected internal virtual BlobServiceClient GetParentBlobServiceClientCore() { if (_parentBlobServiceClient == null) { BlobUriBuilder blobUriBuilder = new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) { BlobContainerName = null, BlobName = null, VersionId = null, Snapshot = null }; _parentBlobServiceClient = new BlobServiceClient(blobUriBuilder.ToUri(), ClientConfiguration, AuthenticationPolicy, ClientSideEncryption); } return _parentBlobServiceClient; } private void SetBuilderAndValidate(BlobSasBuilder builder) { if (builder.BlobContainerName == null) { string text = builder.BlobContainerName = Name; } if (!builder.BlobContainerName.Equals(Name, StringComparison.InvariantCulture)) throw Errors.SasNamesNotMatching("BlobContainerName", "BlobSasBuilder", "Name"); if (!string.IsNullOrEmpty(builder.BlobName)) throw Errors.SasBuilderEmptyParam("builder", "BlobName", "Name"); } } }