Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads 1.0.0

Prefix Reserved
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads --version 1.0.0
                    
NuGet\Install-Package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads -Version 1.0.0
                    
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="Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads" />
                    
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 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads --version 1.0.0
                    
#r "nuget: Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads, 1.0.0"
                    
#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 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads@1.0.0
                    
#: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=Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads&version=1.0.0
                    
Install as a Cake Tool

External payload auto-purge for .NET isolated Functions

The optional Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads package supplies the Durable Task SDK's purge orchestration and activities as ordinary .NET isolated Functions. It targets .NET 8 and .NET 10.

Requirements

Use:

  • The compatible Durable Task SDK 1.27.0 and Durable Task Core 3.11.2 dependency set.
  • Durable Functions host extension Microsoft.Azure.WebJobs.Extensions.DurableTask 3.17.0 or later.
  • Isolated worker extension Microsoft.Azure.Functions.Worker.Extensions.DurableTask 1.21.0 or later, with optional Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureBlobPayloads 1.0.0 or later to supply the purge Functions.
  • A compatible storage provider package that supports external payload auto-purge.
  • The same external payload storage account and container that the provider uses for the target task hub.

Every worker that can receive purge work for the task hub must use compatible packages and a valid payload-store configuration.

Configure the payload store

Configure the store when building the isolated worker:

using System;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Hosting;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(worker =>
    {
        worker.ConfigureLargePayloadPurgeFunctions(options =>
        {
            options.ConnectionString =
                Environment.GetEnvironmentVariable("PayloadStorageConnection")
                ?? throw new InvalidOperationException(
                    "PayloadStorageConnection is required.");
            options.ContainerName =
                Environment.GetEnvironmentVariable("PayloadStorageContainer")
                ?? throw new InvalidOperationException(
                    "PayloadStorageContainer is required.");
        });
    })
    .Build();

await host.RunAsync();

The credentials belong to the worker process. They are not copied from the Functions host or sent through a blob-deletion RPC. The account and container must match the external payload store configured by the provider for this worker's task hub.

Loading the optional package, worker startup, bound-client creation, ordinary client operations, and enable/disable calls do not resolve or construct a PayloadStore. You can register a custom PayloadStore instead of calling ConfigureLargePayloadPurgeFunctions.

Enabling auto-purge can succeed without a working local store. The deletion activity still requires a valid PayloadStore: a missing registration or invalid configuration fails at runtime when the worker activates the deletion Function. Configure the store on every worker that can receive purge work.

The built-in store is a singleton. Custom stores retain their registered DI lifetime and are resolved in the deletion Function's invocation scope. DI-created instances remain owned by the host or their scope. If you register an existing store instance, you remain responsible for disposing it.

Enable or disable a task hub

Auto-purge is disabled until you explicitly enable it through a normally bound DurableTaskClient:

await client.SetLargePayloadAutoPurgeAsync(
    true,
    cancellationToken: cancellationToken);

await client.SetLargePayloadAutoPurgeAsync(
    false,
    cancellationToken: cancellationToken);

The bound client's task hub and connection determine which hub is changed. Enable each task hub separately.

An enable call is not transactional; cancellation or failure does not roll back changes that already succeeded.

Enable auto-purge before retiring instances whose external payloads should be tracked. Enabling later does not backfill payloads retired while the setting was disabled.

Disabling auto-purge prevents new eligible retirements from being tracked. It does not terminate an already-running purge orchestration or cancel work that was already fetched.

Referencing the optional package, configuring the store, or restarting the host does not enable auto-purge.

Reserved Functions and versioning

The package supplies these reserved Functions:

  • BlobPurgeJobOrchestrator
  • GetLargePayloadTombstonesActivity
  • DeleteExternalBlobActivity
  • ReportLargePayloadPurgeResultsActivity

Do not redeclare these names in your application.

The purge orchestration is SDK-owned and unversioned. This exemption applies only to the exact reserved orchestration. Business orchestration version policies and nonempty execution versions remain unchanged.

Limitations

  • This integration supports .NET isolated Functions only.
  • It does not add an HTTP management API or automatic enablement.
  • The common Functions host does not delete blobs; deletion runs in the isolated worker with the configured store.
  • Fetch and report operations use the task hub of the executing worker.
  • Rolling back to incompatible host, worker, Core, SDK, or provider packages can break active purge executions.
  • Enabling auto-purge does not guarantee storage availability when purge activities run.
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  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. 
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
1.0.0 51 10/29/2026