dotnet/wpf · error · NullReferenceException

signature.PackageSignature

Error message

signature.PackageSignature

What it means

RemoveSignature throws this NullReferenceException when the passed XpsDigitalSignature has a null PackageSignature. This indicates a detached or improperly constructed signature object that is not backed by a package signature; it is an internal state error guard rather than an argument validation.

Solutions

  1. Verify the XpsDigitalSignature came from this XpsDocument (e.g. via GetSignatures) before calling RemoveSignature
  2. Only pass signatures whose PackageSignature was created by a successful Sign operation
  3. Check signature.PackageSignature for null before calling RemoveSignature
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XpsDocument.cs:473 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/ae48dbb388137396. Report an issue: GitHub.

Appendix: source

Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XpsDocument.cs:473

        /// <summary>
        /// Removes a Digital Signature
        /// </summary>
        /// <param name="signature">
        /// The signature to be removed
        /// </param>
        /// <exception cref="ArgumentNullException">signature is null.</exception>
        public
        void
        RemoveSignature(
            XpsDigitalSignature signature
            )
        {
            CheckDisposed();

            ArgumentNullException.ThrowIfNull(signature);
            if (null == signature.PackageSignature)
            {
                throw new NullReferenceException("signature.PackageSignature");
            }
            if (null == signature.PackageSignature.SignaturePart)
            {
                throw new NullReferenceException("signature.PackageSignature.SignaturePart");
            }
            if( CurrentXpsManager == null )
            {
                throw new InvalidOperationException(SR.ReachPackaging_DocumentWasClosed);
            }
            PackageDigitalSignatureManager packageSignatures = new PackageDigitalSignatureManager(CurrentXpsManager.MetroPackage);
            packageSignatures.RemoveSignature(signature.PackageSignature.SignaturePart.Uri );
            _reachSignatures = null;
            _reachSignatureList = null;
            EnsureSignatures();
}

        /// <summary>
        /// This method adds a thumbnail to the current Xps package.

View on GitHub (pinned to 81131a70a4)