AF.Umbraco.Azure.Blob.Media.Storage
1.0.0
dotnet add package AF.Umbraco.Azure.Blob.Media.Storage --version 1.0.0
NuGet\Install-Package AF.Umbraco.Azure.Blob.Media.Storage -Version 1.0.0
<PackageReference Include="AF.Umbraco.Azure.Blob.Media.Storage" Version="1.0.0" />
<PackageVersion Include="AF.Umbraco.Azure.Blob.Media.Storage" Version="1.0.0" />
<PackageReference Include="AF.Umbraco.Azure.Blob.Media.Storage" />
paket add AF.Umbraco.Azure.Blob.Media.Storage --version 1.0.0
#r "nuget: AF.Umbraco.Azure.Blob.Media.Storage, 1.0.0"
#:package AF.Umbraco.Azure.Blob.Media.Storage@1.0.0
#addin nuget:?package=AF.Umbraco.Azure.Blob.Media.Storage&version=1.0.0
#tool nuget:?package=AF.Umbraco.Azure.Blob.Media.Storage&version=1.0.0
AF.Umbraco.Azure.Blob.Media.Storage
Azure Blob media storage provider for Umbraco 15/16/17 on .NET 9/10.
This package configures Umbraco to use Azure Blob for:
- Media filesystem
- ImageSharp cache
- Startup fail-fast checks (configuration, connectivity, containers)
- Configurable ImageSharp cache-retention cleanup
- Optional smoke endpoints (
AF_SMOKE_TESTS=1)
No Program.cs changes are required.
Compatibility
- Umbraco CMS:
15.x,16.x,17.x - .NET:
9.0,10.0
Dependencies
Umbraco.StorageProviders.AzureBlobUmbraco.StorageProviders.AzureBlob.ImageSharp
Test hosts and smoke CI
- Local compatibility hosts are included under src/Umbraco.Cms.15.x, src/Umbraco.Cms.16.x, and src/Umbraco.Cms.17.x.
- Each host supports local overrides through appsettings.Local.json.
Installation
dotnet add package AF.Umbraco.Azure.Blob.Media.Storage
Required Configuration
Required sections:
Umbraco:Storage:AzureBlob:MediaUmbraco:Storage:AzureBlob:ImageSharp
Required keys in both sections:
ConnectionStringContainerName
If a required section/key is missing, startup is blocked.
Optional Configuration
Optional keys:
ContainerRootPathVirtualPath
Cache Retention Cleanup
Configuration path:
Umbraco:Storage:AzureBlob:ImageSharp:CacheRetention
Supported keys:
Enabled(defaultfalse)NumberOfDays(default90)TestModeEnable(defaultfalse)TestModeSweepSeconds(default30)TestModeMaxAgeMinutes(default10)
Behavior:
- normal mode: deletes cache blobs older than
NumberOfDaysevery 12 hours - test mode: sweep/max-age controlled by
TestModeSweepSeconds/TestModeMaxAgeMinutes
Storage Layout
Recommended setup: separate containers.
Media.ContainerName = umbraco17-mediaImageSharp.ContainerName = umbraco17-cache
Shared-container setup is supported, but use explicit root isolation:
Media.ContainerRootPath = mediaImageSharp.ContainerRootPath = cache
Without explicit isolation, media and cache paths can overlap.
Configuration Example
{
"Umbraco": {
"Storage": {
"AzureBlob": {
"Media": {
"ConnectionString": "DefaultEndpointsProtocol=http;AccountName=azurite-storage;AccountKey=...;BlobEndpoint=http://127.0.0.1:10000/azurite-storage;",
"ContainerName": "umbraco17",
"ContainerRootPath": "media",
"VirtualPath": "~/media"
},
"ImageSharp": {
"ConnectionString": "DefaultEndpointsProtocol=http;AccountName=azurite-storage;AccountKey=...;BlobEndpoint=http://127.0.0.1:10000/azurite-storage;",
"ContainerName": "umbraco17",
"ContainerRootPath": "cache",
"VirtualPath": "~/media",
"CacheRetention": {
"Enabled": false,
"NumberOfDays": 90,
"TestModeEnable": false,
"TestModeSweepSeconds": 30,
"TestModeMaxAgeMinutes": 10
}
}
}
}
}
}
Smoke Endpoints (Opt-In)
Enable:
AF_SMOKE_TESTS=1
Endpoints:
GET /smoke/healthGET /smoke/debug-testPOST /smoke/media-upload
Documentation
docs/API_REFERENCE.mddocs/ARCHITECTURE.mddocs/CHANGELOG.mddocs/CONFIGURATION.mddocs/DEVELOPMENT.mddocs/MAINTENANCE.mddocs/PROJECT_STRUCTURE.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Umbraco.Cms.Web.Common (>= 15.0.0 && < 18.0.0)
- Umbraco.StorageProviders.AzureBlob (>= 15.0.0 && < 18.0.0)
- Umbraco.StorageProviders.AzureBlob.ImageSharp (>= 15.0.0 && < 18.0.0)
-
net9.0
- Umbraco.Cms.Web.Common (>= 15.0.0 && < 18.0.0)
- Umbraco.StorageProviders.AzureBlob (>= 15.0.0 && < 18.0.0)
- Umbraco.StorageProviders.AzureBlob.ImageSharp (>= 15.0.0 && < 18.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 83 | 2/16/2026 |
1.0.0 - First public release. Adds Azure Blob media filesystem and ImageSharp cache auto-composition, startup fail-fast checks, configurable cache-retention cleanup, and optional smoke endpoints.