我正在开发一种数字签名解决方案,允许最终用户在PDF文档中添加数字签名。为此,我开发了一个基于.NET Desktop的应用程序,该应用程序运行良好。
然后,我在Windows服务中使用了相同的代码,并尝试向PDF添加签名,但是该服务变得无响应,并在特定的代码行处暂停。
我在签名PDF文件时使用了数字签名令牌。
这是我的代码-
private static void SignTestMessage(X509Certificate2 cert)
{
try
{
byte[] content = new byte[]
{
166,
100,
234,
184,
137,
4,
194,
172,
72,
67,
65,
14
};
ContentInfo contentInfo = new ContentInfo(content);
SignedCms signedCms = new SignedCms(contentInfo);
signedCms.ComputeSignature(new CmsSigner(cert)
{
IncludeOption = X509IncludeOption.EndCertOnly
}, false);
signedCms.Encode();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
注意:我正在使用用户凭据(而不是系统帐户)运行Windows服务,以便它可以检测/从个人商店获取证书。
在调试此Windows服务时,我知道在代码ComputeSignature
的这一行,它停在那里,此后什么也没发生。