Soenneker.Blob.Client
4.0.2183
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Blob.Client --version 4.0.2183
NuGet\Install-Package Soenneker.Blob.Client -Version 4.0.2183
<PackageReference Include="Soenneker.Blob.Client" Version="4.0.2183" />
<PackageVersion Include="Soenneker.Blob.Client" Version="4.0.2183" />
<PackageReference Include="Soenneker.Blob.Client" />
paket add Soenneker.Blob.Client --version 4.0.2183
#r "nuget: Soenneker.Blob.Client, 4.0.2183"
#:package Soenneker.Blob.Client@4.0.2183
#addin nuget:?package=Soenneker.Blob.Client&version=4.0.2183
#tool nuget:?package=Soenneker.Blob.Client&version=4.0.2183
Soenneker.Blob.Client
Resolves Azure BlobClient instances through a cached container client and creates a missing container before returning the blob client.
Install
dotnet add package Soenneker.Blob.Client
Configure the Azure Storage connection string:
{
"Azure": {
"Storage": {
"Blob": {
"ConnectionString": "<connection string>"
}
}
}
}
Keep the real value in an environment-specific secret provider rather than committing it to configuration files.
Register the utility in Program.cs:
using Soenneker.Blob.Client.Registrars;
builder.Services.AddBlobClientUtilAsSingleton();
The singleton registration is the usual choice. A scoped registration is available, but it still uses the singleton container cache.
Resolve a blob client
using Azure.Storage.Blobs;
using Soenneker.Blob.Client.Abstract;
public sealed class InvoiceStore(IBlobClientUtil blobClients)
{
public async ValueTask<BlobClient> GetInvoice(
Guid invoiceId,
CancellationToken cancellationToken)
{
return await blobClients.Get(
"invoices",
$"2026/{invoiceId:N}.pdf",
cancellationToken: cancellationToken);
}
}
relativeUrl is an Azure blob name, not a URL. Slashes create a virtual hierarchy in tools and listings, but the name remains one blob key.
The returned BlobClient can be used with the Azure SDK directly:
BlobClient blob = await blobClients.Get(
"invoices",
"2026/summary.pdf",
cancellationToken: cancellationToken);
await blob.UploadAsync(stream, overwrite: true, cancellationToken);
Container behavior
- Container names are converted to lowercase before lookup.
- The first lookup for a container checks Azure and creates it if missing.
PublicAccessType.Noneis the default and keeps a newly created container private.publicAccessTypeis used only when creating a missing container. It does not inspect or change the access policy of an existing container.- Container clients are cached by normalized container name. Use one consistent public-access choice for each container.
Operational notes
- Cancellation stops pending work; it does not undo work that has already completed.
- Resolving a blob client can perform a container existence check or creation, so it is not a purely local factory call.
- This utility does not upload, download, overwrite, delete, or authorize individual blobs; those behaviors come from the returned Azure SDK client and its credentials.
- Treat public container access as an explicit data-exposure decision. Prefer private containers and SAS URLs for limited external access.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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
- Soenneker.Blob.Container (>= 4.0.2963)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Soenneker.Blob.Client:
| Package | Downloads |
|---|---|
|
Soenneker.Blob.Download
A utility library for Azure Blob download operations |
|
|
Soenneker.Blob.Delete
A utility library for Azure Blob storage delete operations |
|
|
Soenneker.Blob.Sas
A utility library for Azure Blob SAS operations |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.2189 | 0 | 9/4/2026 |
| 4.0.2188 | 45 | 9/4/2026 |
| 4.0.2186 | 87 | 9/4/2026 |
| 4.0.2185 | 118 | 9/4/2026 |
| 4.0.2184 | 98 | 9/4/2026 |
| 4.0.2183 | 200 | 9/1/2026 |
| 4.0.2182 | 172 | 9/1/2026 |
| 4.0.2181 | 182 | 8/31/2026 |
| 4.0.2180 | 106 | 8/31/2026 |
| 4.0.2179 | 238 | 8/31/2026 |
| 4.0.2178 | 125 | 8/31/2026 |
| 4.0.2177 | 204 | 8/30/2026 |
| 4.0.2176 | 199 | 8/30/2026 |
| 4.0.2175 | 192 | 8/30/2026 |
| 4.0.2174 | 263 | 8/30/2026 |
| 4.0.2173 | 370 | 8/30/2026 |
| 4.0.2172 | 147 | 8/30/2026 |
| 4.0.2171 | 75 | 8/30/2026 |
| 4.0.2170 | 141 | 8/29/2026 |
| 4.0.2169 | 83 | 8/29/2026 |
Updated NuGet packages