dotnet/wpf · error · XpsPackagingException

ReachPackaging_NotValidSignatureDefinitionAttribute

Error message

ReachPackaging_NotValidSignatureDefinitionAttribute

What it means

ValidateSignatureDefinitionAttribute throws this XpsPackagingException when ReadAttributes encounters an attribute name on a signature definition element that is not one of the recognized attributes (SpotID, SignerName, xml:lang, etc.). It signals an unexpected/invalid attribute in the SignatureDefinition XML of the XPS package.

Solutions

  1. Only write recognized attributes (SpotId, SignerName, xml:lang, SignBy, SigningLocale, Intent) inside the SignatureDefinition element
  2. Remove the unrecognized attribute from the XPS SignatureDefinition markup
  3. If reading third-party markup, catch XpsPackagingException around ParseSignatureDefinitions and skip malformed definitions
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XPSSignatureDefinition.cs:500 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dotnet/wpf@81131a70a4 (2026-09-14). Data as JSON: /api/errors/c656d054537a1bef. Report an issue: GitHub.

Appendix: source

Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XPSSignatureDefinition.cs:500

                {
                    SpotId = new Guid(XmlConvert.DecodeName(attributeValue));
                }
                catch (ArgumentNullException)
                {
                    SpotId = null;
                }
                catch (FormatException)
                {
                    SpotId = null;
                }
            }
            else if (attributeName == XpsS0Markup.XmlLang)
            {
                Culture = new CultureInfo(attributeValue);
            }
            else
            {
                throw new XpsPackagingException(SR.Format(SR.ReachPackaging_NotValidSignatureDefinitionAttribute, attributeName));
            }
        }

        private
        void
        ValidateSpotLocationAttribute( string attributeName, string attributeValue )
        {
            ConfirmSpotLocation();

            if (attributeName == XpsS0Markup.StartX)
            {
                SpotLocation.StartX = double.Parse(attributeValue, System.Globalization.CultureInfo.InvariantCulture);
            }
            else if (attributeName == XpsS0Markup.StartY)
            {
                SpotLocation.StartY = double.Parse(attributeValue, System.Globalization.CultureInfo.InvariantCulture);
            }
            else if (attributeName == XpsS0Markup.PageUri)

View on GitHub (pinned to 81131a70a4)