CloudBlobContainer.BeginCreate Method (BlobRequestOptions, AsyncCallback, Object)

Storage Client Library NET API

[This topic is part of the Microsoft Azure Storage Client Library 1.7, which has been deprecated. See Storage Client Library for the latest version.]

Begins an asynchronous operation to create a container, using a conditional request based on the BlobRequestOptions that you specify.

Namespace: Microsoft.WindowsAzure.StorageClient
Assembly: Microsoft.WindowsAzure.StorageClient (in Microsoft.WindowsAzure.StorageClient.dll)

Usage

Visual Basic
Dim instance As CloudBlobContainer
Dim options As BlobRequestOptions
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginCreate(options, callback, state)

Syntax

Visual Basic
Public Function BeginCreate ( _
	options As BlobRequestOptions, _
	callback As AsyncCallback, _
	state As Object _
) As IAsyncResult
C#
public IAsyncResult BeginCreate (
	BlobRequestOptions options,
	AsyncCallback callback,
	Object state
)
C++
public:
IAsyncResult^ BeginCreate (
	BlobRequestOptions^ options, 
	AsyncCallback^ callback, 
	Object^ state
)
J#
JScript

Parameters

options

Type: Microsoft.WindowsAzure.StorageClient.BlobRequestOptions

An object that specifies any additional options for the request.

callback

Type: System.AsyncCallback

The callback delegate that will receive notification when the asynchronous operation completes.

state

Type: System.Object

A user-defined object that will be passed to the callback delegate.

Return Value

Type: System.IAsyncResult

An IAsyncResult that references the asynchronous operation.

Example

The following code example creates a new container and defines metadata for it, and handles the error in case a container with the same name already exists.

C# Copy Code
static void CreateContainerAsync(Uri blobEndpoint, string accountName, string accountKey)
{
    //Create service client for credentialed access to the Blob service.
    CloudBlobClient blobClient = 
        new CloudBlobClient(blobEndpoint, new StorageCredentialsAccountAndKey(accountName, accountKey));

    //Get a reference for the new container.
    CloudBlobContainer container = blobClient.GetContainerReference("newcontainer");

    //Define metadata for the container.
    container.Metadata["media"] = "video";

    //Begin the operation to create the container.
    container.BeginCreate(CreateContainerCallback, container);
}

static void CreateContainerCallback(IAsyncResult result)
{
    CloudBlobContainer container = (CloudBlobContainer)result.AsyncState;
            
    //End the operation. Handle the error in case the container already exists.
    try
    {
        container.EndCreate(result);
        Console.WriteLine("Container " + container.Name + " created successfully.");
    }
    catch (StorageClientException e)
    {
        if (e.ErrorCode == StorageErrorCode.ContainerAlreadyExists)
        {
            Console.WriteLine("Cannot create the container because it already exists.");
        }
        else
        {
            Console.WriteLine(e.ErrorCode);
        }
    }
}

Remarks

Containers are created directly beneath the storage account. It's not possible to nest one container beneath another.

You can specify metadata on the container at the time that you created it. In this case, the call to BeginCreate writes the metadata to the new container, so it's not necessary to also call SetMetadata.

The BeginCreate method throws a StorageClientException if the specified container already exists. The error code returned by the service is ContainerAlreadyExists. If a container with the same name is still being deleted, the service returns error code ContainerBeingDeleted. If you specify a container with upper-case characters in its name, the method throws a StorageClientException.

You can optionally create a default or root container for your storage account. The root container may be inferred from a URL requesting a blob resource. The root container makes it possible to reference a blob from the top level of the storage account hierarchy, without referencing the container name. To add the root container to your storage account, create a container named $root.


Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

Windows Vista, Windows 7, Windows Server 2008, Windows 8.1, Windows Server 2012 R2, Windows 8 and Windows Server 2012

Change History

See Also