abpframework/abp · error · AbpException

Could not find the BLOB Storage provider with the type ({con

Error message

Could not find the BLOB Storage provider with the type ({configuration.ProviderType.AssemblyQualifiedName}) configured for the container {containerName} and no default provider was set.

What it means

Thrown when the container's ProviderType is set (so configuration exists) but none of the registered IBlobProvider instances are assignable to that type. The provider type was requested but the matching provider module that registers the concrete IBlobProvider is missing from DI.

Source

Thrown at framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/DefaultBlobProviderSelector.cs:49

        if (!BlobProviders.Any())
        {
            throw new AbpException("No BLOB Storage provider was registered! At least one provider must be registered to be able to use the BLOB Storing System.");
        }

        if (configuration.ProviderType == null)
        {
            throw new AbpException("No BLOB Storage provider was used! At least one provider must be configured to be able to use the BLOB Storing System.");
        }

        foreach (var provider in BlobProviders)
        {
            if (ProxyHelper.GetUnProxiedType(provider).IsAssignableTo(configuration.ProviderType))
            {
                return provider;
            }
        }

        throw new AbpException(
            $"Could not find the BLOB Storage provider with the type ({configuration.ProviderType.AssemblyQualifiedName}) configured for the container {containerName} and no default provider was set."
        );
    }
}

View on GitHub (pinned to 7ed43b1931)

Solutions

  1. Add the [DependsOn] for the provider module that registers the IBlobProvider matching the configured ProviderType.
  2. Verify the package reference and module for the exact provider type named in the error message.
  3. If using a custom provider, register it: context.Services.AddTransient<IBlobProvider, YourProvider>(); ensuring the type is assignable to the configured ProviderType.
  4. Check that the ProviderType configured is the interface/base the registered provider implements, not an unrelated type.

Example fix

// before: UseAzureBlobStorage configured but module not depended on
Configure<AbpBlobStoringOptions>(o =>
    o.Containers.Configure<MyContainer>(c => c.UseAzureBlobStorage()));

// after: add the matching module dependency
[DependsOn(typeof(AbpBlobStoringModule))]
[DependsOn(typeof(AzureBlobStorageModule))]   // <-- registers AzureBlobProvider
public class MyAppModule : AbpModule { }
Defensive patterns

Strategy: validation

Validate before calling

// Verify a registered provider is assignable to the configured ProviderType.
var config = configurationProvider.Get(containerName);
var match = serviceProvider.GetServices<IBlobProvider>()
    .FirstOrDefault(p => ProxyHelper.GetUnProxiedType(p).IsAssignableTo(config.ProviderType!));
if (match == null)
{
    throw new InvalidOperationException($"No registered IBlobProvider is assignable to {config.ProviderType}. Add the matching provider module.");
}

Type guard

public static bool HasProviderForType(IServiceProvider sp, Type providerType) =>
    sp.GetServices<IBlobProvider>().Any(p => ProxyHelper.GetUnProxiedType(p).IsAssignableTo(providerType));

Try / catch

try
{
    provider = selector.Get(containerName);
}
catch (AbpException ex) when (ex.Message.Contains("Could not find the BLOB Storage provider", StringComparison.Ordinal))
{
    logger.LogError(ex, "Provider module for {Type} is missing from DI.", configuredProviderType);
    throw;
}

Prevention

When it happens

Trigger: DefaultBlobProviderSelector.Get iterates BlobProviders after a non-null ProviderType is found; no registered provider's concrete type IsAssignableTo(configuration.ProviderType) returns true. The configuration names a provider (e.g., AzureBlobProvider) whose implementing module was never added.

Common situations: Configuring UseAzureBlobStorage() but forgetting [DependsOn(typeof(AzureBlobStorageModule))]; referencing only the abstractions package and not the provider package; provider module present in one host but absent in another (e.g., a worker vs web host); version mismatch where the provider type name changed.

Related errors


AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13). Data as JSON: /api/errors/c4fd59c5ea111185. Report an issue: GitHub.