WriteableFileProviders.Minio 2027.1.1

dotnet add package WriteableFileProviders.Minio --version 2027.1.1
                    
NuGet\Install-Package WriteableFileProviders.Minio -Version 2027.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WriteableFileProviders.Minio" Version="2027.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WriteableFileProviders.Minio" Version="2027.1.1" />
                    
Directory.Packages.props
<PackageReference Include="WriteableFileProviders.Minio" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WriteableFileProviders.Minio --version 2027.1.1
                    
#r "nuget: WriteableFileProviders.Minio, 2027.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WriteableFileProviders.Minio@2027.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WriteableFileProviders.Minio&version=2027.1.1
                    
Install as a Cake Addin
#tool nuget:?package=WriteableFileProviders.Minio&version=2027.1.1
                    
Install as a Cake Tool

WriteableFileProviders.Minio

A MinIO bucket as an IWriteableFileProvider. Part of WriteableFileProviders. It runs on AWSSDK.S3 4, the S3 protocol MinIO speaks, not on the Minio SDK.

Install

dotnet add package WriteableFileProviders.Minio

Needs .NET 10, and is native AOT compatible. Keep every WriteableFileProviders package in an app on the same major version.

Use

using WriteableFileProviders;
using WriteableFileProviders.Minio;

await using var files = new WriteableMinioFileProvider(new MinioFileProviderOptions
{
    HostAndPort = "minio.example.net:9000",
    UseSSL = true,
    AccessKey = configuration["Minio:AccessKey"],
    SecretKey = configuration["Minio:SecretKey"],
    BucketName = "files",
});

await files.UpdateFileAsync("reports/2026.csv", stream);
var url = await files.GetSignedUrlAsync("reports/2026.csv", new SignedUrlOptions { Validity = TimeSpan.FromHours(1) });

From configuration (services.AddWriteableFileProvider(section)):

{ "Files": { "Type": "WriteableMinioFileProvider", "HostAndPort": "minio.example.net:9000", "UseSSL": true,
             "AccessKey": "...", "SecretKey": "...", "BucketName": "files" } }

Or pass an IAmazonS3 you build, such as an AmazonS3Client with ServiceURL and ForcePathStyle = true. The provider never disposes it, and reads only the bucket, the root, CreateBucketIfMissing and AllowInsecureHttp from the options.

Configuration

Option Default Meaning
HostAndPort required The server, as host:port or host: no scheme, path or query.
UseSSL false Use HTTPS. Plain HTTP is allowed only toward a loopback host, unless AllowInsecureHttp is set.
AllowInsecureHttp false Allow plain HTTP toward any host, such as a server on a private network.
AccessKey, SecretKey anonymous The key pair. Set both or neither. The secret key is a secret.
BucketName required The bucket.
Region asked from the server The server's region (MINIO_SITE_REGION). Empty: the provider asks once, on first use.
CreateBucketIfMissing false Create the bucket on first use. Without it, a missing bucket throws InvalidOperationException.
RootDirectoryPath the bucket The folder in the bucket the provider is confined to.

Authentication

A MinIO key pair, or none for anonymous access, which can't presign URLs. For anything else, pass your own IAmazonS3. Nothing touches the network until the first call.

What's different

  • Conditions aren't atomic. IfMatch and IfNotExists are checked by the provider first, then sent with the write. MinIO releases without conditional writes ignore them, so a concurrent change can slip in between.
  • Copies and moves aren't atomic either: MinIO ignores If-None-Match on copies and If-Match on deletes, so the provider checks the destination and the source's version itself. A source changed meanwhile undoes the move.
  • A file and a folder with the same name: MinIO lists only the file, and hides what's under the folder until the file is deleted.
  • Writes up to 8 MiB are one request, larger ones a multipart upload (10,000 parts at most). A failed write leaves the old content. Appends rewrite the file with If-Match on the version read, and after a concurrent write read it again and append after it, up to five attempts in all.
  • Listings carry no content type; GetFileInfoAsync does.
  • No storage class is sent: MinIO refuses the ones it doesn't know.
  • Signed URLs are presigned read and write URLs, up to 7 days, over the scheme UseSSL picks. Create URLs come from the gateway. With your own client, set AllowShorterValidity.
  • A server with a site region needs Region for CreateBucketIfMissing to create a missing bucket.
  • Watch throws NotSupportedException.

Learn more

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2027.1.1 139 10/13/2026
2027.1.1-rc.1 58 10/13/2026
2027.1.0 97 10/12/2026
2027.1.0-rc.1 64 10/12/2026
2027.0.0 403 10/11/2026
2027.0.0-rc.2 72 10/11/2026