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
- Add the [DependsOn] for the provider module that registers the IBlobProvider matching the configured ProviderType.
- Verify the package reference and module for the exact provider type named in the error message.
- If using a custom provider, register it: context.Services.AddTransient<IBlobProvider, YourProvider>(); ensuring the type is assignable to the configured ProviderType.
- 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
- Keep the provider module's DependsOn next to the Use<Provider> configuration call.
- In multi-host solutions, audit that every host declares the provider modules it needs.
- When upgrading provider packages, verify type names did not change.
- Write a startup test that resolves each container's provider successfully.
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
- No BLOB Storage provider was registered! At least one provid
- No BLOB Storage provider was used! At least one provider mus
- The BLOB was encrypted with a tenant-specific passphrase, bu
- The BLOB was encrypted with the '{keySource}' passphrase, bu
- Could not find an implementation of {typeof(IConfiguration).
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/c4fd59c5ea111185.
Report an issue: GitHub.