我遇到了标题中提到的方法的问题。如果我试图签署一个XPS文档,它会运行到NullReferenceException:
at System.Windows.Xps.Packaging.XpsDocument.get_IsSignable() at System.Windows.Xps.Packaging.XpsDocument.SignDigitally(X509Certificate证书,布尔embedCertificate,XpsDigSigPartAlteringRestrictions限制,字符串signatureId,Boolean testIsSignable) at System.Windows.Xps.Packaging.XpsDocument.SignDigitally(X509Certificate证书,Boolean embedCertificate,XpsDigSigPartAlteringRestrictions限制)
任何建议都将不胜感激。
if (sign_digitally)
{
UserCertificateSelector selector = new UserCertificateSelector();
if (selector.ShowDialog() == true)
{
var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
certStore.Open(OpenFlags.ReadOnly);
#if DEBUG
X509CertificateCollection collection = certStore.Certificates;
#else
X509CertificateCollection collection = certStore.Certificates.Find(X509FindType.FindByThumbprint, selector.SelectedCertificate.CertificateThumbPrint,true);
#endif
if (collection.Count > 0)
{
xpsDoc.SignDigitally(collection[0], true, XpsDigSigPartAlteringRestrictions.None);
}
}
}
...发布于 2021-03-10 21:21:31
确保您处理的是XPS文件格式,而不是OXPS。两者都可以作为XpsDocument打开,但只有XPS可以签名。你可以检查"XpsDocument.IsSignable“标志,一旦你打开文件-对于OXPS,它将是空的。
https://stackoverflow.com/questions/65627275
复制相似问题