LuckyPennySoftware/AutoMapper · error · AutoMapperMappingException

Error creating mapping strategy.

Error message

Error creating mapping strategy.

What it means

When a type map is sealed, AutoMapper compiles its runtime mapping lambda via CreateMapperLambda. Any exception other than AutoMapperConfigurationException that escapes compilation is wrapped in AutoMapperMappingException carrying the failing TypeMap, with the original exception as InnerException. So the message is generic; the TypeMap and InnerException identify the real failure.

Source

Thrown at src/AutoMapper/TypeMap.cs:217

            }
        }
    }
    public bool HasDerivedTypesToInclude => IncludedDerivedTypes.Count > 0;
    public void Seal(IGlobalConfiguration configuration)
    {
        if (_sealed)
        {
            return;
        }
        _sealed = true;
        try
        {
            _details?.Seal(configuration, this);
            MapExpression = Projection ? EmptyLambda : CreateMapperLambda(configuration);
        }
        catch (Exception e) when (e is not AutoMapperConfigurationException)
        {
            throw new AutoMapperMappingException("Error creating mapping strategy.", e, this);
        }
        SourceTypeDetails = null;
        DestinationTypeDetails = null;
    }
    public List<PropertyMap> OrderedPropertyMaps()
    {
        if (HasMappingOrder())
        {
            _propertyMaps.Sort((left, right) => Comparer<int?>.Default.Compare(left.MappingOrder, right.MappingOrder));
        }
        return _propertyMaps;
        bool HasMappingOrder()
        {
            if (_propertyMaps == null)
            {
                return false;
            }
            foreach (var propertyMap in _propertyMaps)

View on GitHub (pinned to dfa6dd587c)

Solutions

  1. Inspect ex.InnerException and ex.TypeMap to find the exact source->destination map and root cause.
  2. Run mapper.ConfigurationProvider.AssertConfigurationIsValid() in startup/tests to surface the failure early and with full detail.
  3. Fix or simplify the offending MapFrom/ConvertUsing/resolver in the identified TypeMap.
  4. If the cause is unclear, isolate the map with a minimal reproduction and enable internal diagnostics.

Example fix

// before
CreateMap<Source, Dest>().ForMember(d => d.Value, o => o.MapFrom((s, d) => s.Items[badIndex].Value)); // bad expression at seal

// after
// validate at startup to surface the failing TypeMap + inner exception:
configuration.AssertConfigurationIsValid();
// then fix the offending MapFrom to a safe, compileable expression.
Defensive patterns

Strategy: try-catch

Validate before calling

// Surface strategy-build failures at startup, not at first Map:
try
{
    configuration.AssertConfigurationIsValid();
}
catch (AutoMapperMappingException ex)
{
    var failingTypeMap = ex.TypeMap;
    var root = ex.InnerException;
    // fail fast with the failing map + root cause
    throw;
}

Try / catch

try { dest = mapper.Map<TDest>(source); }
catch (AutoMapperMappingException ex) when (ex.Message.Contains("Error creating mapping strategy"))
{
    var failingTypeMap = ex.TypeMap;
    var root = ex.InnerException; // the real cause
    // fix the failing MapFrom/ConvertUsing/resolver in failingTypeMap, then retry
}

Prevention

When it happens

Trigger: Sealing happens during configuration build or on first use (or explicitly via AssertConfigurationIsValid). A MapFrom/ConvertUsing/value-resolver expression that fails to build or compile, a reflection error while constructing the expression, or an invalid member mapping surfaces here.

Common situations: A MapFrom lambda that references a null closed-over value or a bad expression; a custom mapper/IValueConverter throwing during expression construction; missing type info; a value resolver that errors at strategy build time.

Related errors


AI-assisted analysis of LuckyPennySoftware/AutoMapper@dfa6dd587c (2026-08-13). Data as JSON: /api/errors/226a3fe01aade609. Report an issue: GitHub.