dotnet/wpf · error · InvalidOperationException
Image_EncoderNoGlobalMetadata
Error message
Image_EncoderNoGlobalMetadata
What it means
The BitmapEncoder.Metadata setter rejects metadata when the codec does not support global (container-level) metadata (_supportsGlobalMetadata is false), throwing InvalidOperationException(Image_EncoderNoGlobalMetadata). This follows the GuidFormat compatibility check (1185).
Solutions
- Verify codec capability before assigning Metadata
- Use a format that supports global metadata (Png, Tiff, Jpeg, Wmp)
- Attach metadata at the frame level via frame.Metadata where supported
- Skip metadata assignment for unsupported formats
Example fix
// before bmpEncoder.Metadata = metadata; // throws // after var tiffEncoder = new TiffBitmapEncoder(); // supports global metadata tiffEncoder.Metadata = metadata;
Defensive patterns
Strategy: type-guard
Validate before calling
if (encoder is BmpBitmapEncoder) skipMetadata = true; // no global metadata support
Type guard
static bool SupportsGlobalMetadata(BitmapEncoder e) => e is not BmpBitmapEncoder;
Try / catch
try { encoder.Metadata = metadata; }
catch (InvalidOperationException) { log.Info("Codec does not support global metadata; skipping"); } Prevention
- Maintain a capability matrix of WPF codecs vs global metadata
- Skip metadata for formats like Bmp
- Prefer formats with metadata support (Png/Tiff/Jpeg/Wmp) when metadata matters
- Use frame-level metadata where the container lacks global support
When it happens
Trigger: Assigning encoder.Metadata on an encoder whose container format lacks global-metadata support (e.g. BmpBitmapEncoder), even with a format-compatible BitmapMetadata.
Common situations: Formats like Bmp have no global metadata blocks; generic encoder pipelines that always set Metadata; migrating encoders between formats without capability checks.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Image_EncoderNoColorContext
- Image_EncoderNoGlobalThumbnail
- Image_EncoderNoPreview
- Image_MetadataNotCompatible
- Image_MetadataNotSupported
AI-assisted analysis of dotnet/wpf@81131a70a4 (2026-09-14).
Data as JSON: /api/errors/02e2d24db65e2d7e.
Report an issue: GitHub.
Appendix: source
Thrown at src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/BitmapEncoder.cs:195
EnsureMetadata(true);
return _metadata;
}
set
{
VerifyAccess();
EnsureBuiltIn();
ArgumentNullException.ThrowIfNull(value);
if (value.GuidFormat != ContainerFormat)
{
throw new InvalidOperationException(SR.Image_MetadataNotCompatible);
}
if (!_supportsGlobalMetadata)
{
throw new InvalidOperationException(SR.Image_EncoderNoGlobalMetadata);
}
_metadata = value;
}
}
/// <summary>
/// Set or get the bitmap's global preview
/// </summary>
public virtual BitmapSource Preview
{
get
{
VerifyAccess();
EnsureBuiltIn();
return _preview;
}
setView on GitHub (pinned to 81131a70a4)