Aspire.Hosting.Azure.Storage 13.1.0
Aspire.Hosting.Azure.Storage library
Provides extension methods and resource definitions for an Aspire AppHost to configure Azure Storage.
Getting started
Prerequisites
- Azure subscription - create one for free
Install the package
Install the Aspire Azure Storage Hosting library with NuGet:
dotnet add package Aspire.Hosting.Azure.Storage
Configure Azure Provisioning for local development
Adding Azure resources to the Aspire application model will automatically enable development-time provisioning for Azure resources so that you don't need to configure them manually. Provisioning requires a number of settings to be available via .NET configuration. Set these values in user secrets in order to allow resources to be configured automatically.
{
"Azure": {
"SubscriptionId": "<your subscription id>",
"ResourceGroupPrefix": "<prefix for the resource group>",
"Location": "<azure location>"
}
}
NOTE: Developers must have Owner access to the target subscription so that role assignments can be configured for the provisioned resources.
Usage example
In the AppHost.cs file of AppHost, add a Blob (can use tables or queues also) Storage connection and consume the connection using the following methods:
var blobs = builder.AddAzureStorage("storage").AddBlobs("blobs");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(blobs);
The WithReference method passes that connection information into a connection string named blobs in the MyService project. In the Program.cs file of MyService, the connection can be consumed using the client library Aspire.Azure.Storage.Blobs:
builder.AddAzureBlobServiceClient("blobs");
Creating and using blob containers and queues directly
You can create and use blob containers and queues directly by adding them to your storage resource. This allows you to provision and reference specific containers or queues for your services.
Adding a blob container
var storage = builder.AddAzureStorage("storage");
var container = storage.AddBlobContainer("my-container");
You can then pass the container reference to a project:
builder.AddProject<Projects.MyService>()
.WithReference(container);
In your service, consume the container using:
builder.AddAzureBlobContainerClient("my-container");
This will register a singleton of type BlobContainerClient.
Adding a queue
var storage = builder.AddAzureStorage("storage");
var queue = storage.AddQueue("my-queue");
Pass the queue reference to a project:
builder.AddProject<Projects.MyService>()
.WithReference(queue);
In your service, consume the queue using:
builder.AddAzureQueue("my-queue");
This will register a singleton of type QueueClient.
This approach allows you to define and use specific blob containers and queues as first-class resources in your Aspire application model.
Connection Properties
When you reference Azure Storage resources using WithReference, the following connection properties are made available to the consuming project:
Azure Storage
The Azure Storage account resource doesn't expose any connection property, reference sub-resources:
Blob Storage
The Blob Storage resource exposes the following connection properties:
| Property Name | Description |
|---|---|
Uri |
The URI of the blob storage service, with the format https://mystorageaccount.blob.core.windows.net/ |
ConnectionString |
Emulator only. The connection string for the blob storage service |
Blob Container
The Blob Container resource inherits all properties from its parent AzureBlobStorageResource and adds:
| Property Name | Description |
|---|---|
BlobContainerName |
The name of the blob container |
Queue Storage
The Queue Storage resource exposes the following connection properties:
| Property Name | Description |
|---|---|
Uri |
The URI of the queue storage service, with the format https://mystorageaccount.queue.core.windows.net/ |
ConnectionString |
Emulator only. The connection string for the queue storage service |
Queue
The Queue resource inherits all properties from its parent AzureQueueStorageResource and adds:
| Property Name | Description |
|---|---|
QueueName |
The name of the queue |
ConnectionString |
Emulator only. The connection string for the table storage service |
Table Storage
The Table Storage resource exposes the following connection properties:
| Property Name | Description |
|---|---|
Uri |
The URI of the table storage service, with the format https://mystorageaccount.table.core.windows.net/ |
ConnectionString |
The connection string for the table storage service |
Aspire exposes each property as an environment variable named [RESOURCE]_[PROPERTY]. For instance, the Uri property of a resource called queue1 becomes QUEUE1_URI.
Additional documentation
- https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/storage/Azure.Storage.Blobs/README.md
- https://github.com/dotnet/aspire/tree/main/src/Components/README.md
Feedback & contributing
No packages depend on Aspire.Hosting.Azure.Storage.
.NET 8.0
- Aspire.Hosting.Azure (>= 13.1.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 8.0.22)
- Microsoft.Extensions.FileSystemGlobbing (>= 10.0.1)
- Microsoft.Extensions.Hosting (>= 8.0.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- KubernetesClient (>= 18.0.5)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Options (>= 8.0.2)
- Microsoft.Extensions.Primitives (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.4)
- Polly.Core (>= 8.6.4)
- Semver (>= 3.0.0)
- StreamJsonRpc (>= 2.22.23)
- System.IO.Hashing (>= 9.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- JsonPatch.Net (>= 3.3.0)
- Humanizer.Core (>= 2.14.1)
- Grpc.Tools (>= 2.72.0)
- AspNetCore.HealthChecks.Azure.Storage.Blobs (>= 9.0.0)
- AspNetCore.HealthChecks.Azure.Storage.Queues (>= 9.0.0)
- Azure.Provisioning (>= 1.4.0)
- Azure.Provisioning.Storage (>= 1.1.2)
- AspNetCore.HealthChecks.Uris (>= 9.0.0)
- Azure.Core (>= 1.50.0)
- Azure.Identity (>= 1.17.0)
- Azure.Provisioning.KeyVault (>= 1.1.0)
- Azure.ResourceManager.Authorization (>= 1.1.6)
- Azure.ResourceManager.KeyVault (>= 1.3.3)
- Azure.ResourceManager.Resources (>= 1.11.1)
- Azure.Security.KeyVault.Secrets (>= 4.8.0)
- Azure.Storage.Blobs (>= 12.26.0)
- Azure.Storage.Queues (>= 12.24.0)
- Google.Protobuf (>= 3.33.0)
- Grpc.AspNetCore (>= 2.71.0)
- Grpc.Net.ClientFactory (>= 2.71.0)
| Version | Downloads | Last updated |
|---|---|---|
| 13.1.0 | 6 | 12/19/2025 |
| 13.0.2 | 6 | 12/6/2025 |
| 13.0.1 | 6 | 12/4/2025 |
| 13.0.0 | 8 | 11/13/2025 |
| 9.5.2 | 7 | 10/30/2025 |
| 9.5.1 | 8 | 10/9/2025 |
| 9.5.0 | 7 | 9/27/2025 |
| 9.4.2 | 8 | 9/4/2025 |
| 9.4.1 | 10 | 8/14/2025 |
| 9.4.0 | 9 | 8/2/2025 |
| 9.3.1 | 3 | 6/13/2025 |
| 9.3.0 | 3 | 6/19/2025 |
| 9.2.1 | 3 | 6/17/2025 |
| 9.2.0 | 4 | 6/19/2025 |
| 9.1.0 | 4 | 6/8/2025 |
| 9.0.0 | 3 | 6/8/2025 |
| 9.0.0-rc.1.24511.1 | 2 | 6/7/2025 |
| 8.2.2 | 9 | 7/1/2025 |
| 8.2.1 | 3 | 6/17/2025 |
| 8.2.0 | 3 | 6/9/2025 |
| 8.1.0 | 4 | 6/7/2025 |
| 8.0.2 | 4 | 6/8/2025 |
| 8.0.1 | 4 | 6/8/2025 |
| 8.0.0 | 13 | 6/8/2025 |
| 8.0.0-preview.7.24251.11 | 2 | 6/18/2025 |
| 8.0.0-preview.6.24214.1 | 5 | 6/9/2025 |
| 8.0.0-preview.5.24201.12 | 7 | 7/19/2025 |