elsa-workflows/elsa-core · error · Exception
No input with name could be found
Error message
No input with name {inputName} could be found What it means
Thrown by EvaluateInputPropertyAsync when the activity descriptor was found but has no input descriptor matching the requested inputName. The registry knows the activity type, but the requested input property does not exist on it.
Solutions
- Correct the inputName to match the Input descriptor's Name exactly (same casing).
- Inspect activityDescriptor.Inputs to list valid input names before calling.
- If the property was renamed, update workflow definitions/designer bindings to the new name.
- Check whether the input should be resolved via the wrapped input property (GetWrappedInputPropertyDescriptor) and that it is declared on the activity.
Example fix
// before
await context.EvaluateInputPropertyAsync("Resultt"); // typo
// after
var names = activityDescriptor.Inputs.Select(i => i.Name); // verify first
await context.EvaluateInputPropertyAsync(nameof(MyActivity.Result)); Defensive patterns
Strategy: validation
Validate before calling
var inputNames = activityDescriptor.Inputs.Select(i => i.Name).ToHashSet(StringComparer.Ordinal);
if (!inputNames.Contains(inputName))
throw new ArgumentException($"Unknown input '{inputName}'. Valid: {string.Join(", ", inputNames)}"); Prevention
- Use nameof(...) or the descriptor's Name when referring to inputs.
- List activityDescriptor.Inputs when unsure of valid names.
- Update all references when renaming Input properties.
When it happens
Trigger: Calling EvaluateInputPropertyAsync("SomeInput") where SomeInput is not a declared Input descriptor on the activity type (typo, renamed property, input declared on a different activity, or wrapped input descriptor removed).
Common situations: Renaming an Input property in a custom activity while workflows or designer code still reference the old name; passing the property name instead of the descriptor Name; casing mismatches; calling on base-type-only inputs that are not wrapped.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- is required.
- Output conversion failed during result validation
- Activity type not found
- Activity descriptor not found
- Failed to evaluate activity input
AI-assisted analysis of elsa-workflows/elsa-core@fe9217bdfa (2026-09-13).
Data as JSON: /api/errors/2aee344f21c814ea.
Report an issue: GitHub.
Appendix: source
Thrown at src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.InputEvaluation.cs:53
public async Task<T?> EvaluateInputPropertyAsync<TActivity, T>(Expression<Func<TActivity, Input<T>>> propertyExpression)
{
var inputName = propertyExpression.GetProperty()!.Name;
var input = await EvaluateInputPropertyAsync(context, inputName);
return input.ConvertTo<T>();
}
/// <summary>
/// Evaluates a specific input property of the activity.
/// </summary>
public async Task<object?> EvaluateInputPropertyAsync(string inputName)
{
var activity = context.Activity;
var activityRegistryLookup = context.GetRequiredService<IActivityRegistryLookupService>();
var activityDescriptor = await activityRegistryLookup.FindAsync(activity.Type) ?? throw new Exception("Activity descriptor not found");
var inputDescriptor = activityDescriptor.GetWrappedInputPropertyDescriptor(activity, inputName);
if (inputDescriptor == null)
throw new Exception($"No input with name {inputName} could be found");
return await EvaluateInputPropertyAsync(context, activityDescriptor, inputDescriptor);
}
/// <summary>
/// Evaluates the specified input and sets the result in the activity execution context's memory space.
/// </summary>
/// <param name="input">The input to evaluate.</param>
/// <typeparam name="T">The type of the input.</typeparam>
/// <returns>The evaluated value.</returns>
public async Task<T?> EvaluateAsync<T>(Input<T> input)
{
var evaluator = context.GetRequiredService<IExpressionEvaluator>();
var memoryBlockReference = input.MemoryBlockReference();
var value = await evaluator.EvaluateAsync(input, context.ExpressionExecutionContext);
memoryBlockReference.Set(context, value);
return value;
}View on GitHub (pinned to fe9217bdfa)