aspnetboilerplate/aspnetboilerplate · error · AbpException
There is no feature with name
Error message
There is no feature with name: {name} What it means
Thrown by FeatureManager.Get when GetOrNull(name) returns null — i.e., no Feature with that name is registered in the feature definition dictionary. Unlike the TryGet-style API, Get is the strict accessor and throws AbpException for unknown names.
Solutions
- Fix the feature name string to match the registered definition exactly.
- Register the feature in a FeatureProvider added to Configuration.Features.Providers.
- Use GetOrNull or IsEnabled instead of Get when absence is an expected case.
- Migrate persisted feature settings that reference renamed/removed features.
Example fix
// before
var feature = featureManager.Get("ExportData"); // not registered
// after
var feature = featureManager.GetOrNull("MyApp.ExportData");
if (feature == null) { /* handle missing definition */ } Defensive patterns
Strategy: type-guard
Validate before calling
var feature = featureManager.GetOrNull(name);
if (feature == null)
{
Logger.Warn($"Unknown feature: {name}");
return false;
} Type guard
bool FeatureExists(FeatureManager fm, string name) => fm.GetOrNull(name) != null;
Try / catch
try { return featureManager.Get(name); }
catch (AbpException ex) when (ex.Message.StartsWith("There is no feature with name"))
{
Logger.Warn($"Feature not registered: {name}");
return null;
} Prevention
- Reference feature names via constants shared with the provider.
- Use GetOrNull/IsEnabled instead of Get when absence is expected.
- Ensure the module defining the feature is loaded in every environment.
- Write a startup test that resolves all referenced feature names.
When it happens
Trigger: Calling FeatureManager.Get("SomeFeature") (directly or via feature value APIs that resolve definitions) with a name never registered by any FeatureProvider, or after the provider defining it was removed.
Common situations: Typo in feature name string; feature defined in a module not loaded in this environment; renaming a feature in code while old persisted feature values/settings still reference the old name; tests missing module registration.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Can not find menu item
- Duplicate feature name detected for
- There is already a feature with name
- There is no menu with given name
- There is no source item with given name
AI-assisted analysis of aspnetboilerplate/aspnetboilerplate@2323c13a15 (2026-09-08).
Data as JSON: /api/errors/00066bd3ec23433b.
Report an issue: GitHub.
Appendix: source
Thrown at src/Abp/Application/Features/FeatureManager.cs:52
using (var provider = CreateProvider(providerType))
{
provider.Object.SetFeatures(this);
}
}
Features.AddAllFeatures();
}
/// <summary>
/// Gets a feature by its given name
/// </summary>
/// <param name="name">Name of the feature</param>
public Feature Get(string name)
{
var feature = GetOrNull(name);
if (feature == null)
{
throw new AbpException("There is no feature with name: " + name);
}
return feature;
}
/// <summary>
/// Gets all the features
/// </summary>
public IReadOnlyList<Feature> GetAll()
{
return Features.Values.ToImmutableList();
}
private IDisposableDependencyObjectWrapper<FeatureProvider> CreateProvider(Type providerType)
{
return _iocManager.ResolveAsDisposable<FeatureProvider>(providerType);
}
}View on GitHub (pinned to 2323c13a15)