从已签名文档的XML读取SignedInfo时,当调用
SignedXml signedXml;
Directory.SetCurrentDirectory(TmpDir);
XmlDocument xmlDoc = new XmlDocument();
foreach(Relationship signature in signs)
{
if(_InMemoryData.ContainsKey(signature.FilePath) || File.Exists(signature.FilePath))
{
using(Stream xmlStream = LoadDataItem(signature.FilePath))
{
xmlDoc.Load(xmlStream);
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Signature");
if(nodeList.Count == 1)
{
signedXml = new SignedXml(xmlDoc);
signedXml.LoadXml((XmlElement)nodeList[0]); //throws在signedXml.LoadXml((XmlElement)nodeList)上;它抛出了带有message signedXml.LoadXml错误元素SignedInfo/Reference的异常“。
这个XML的唯一奇怪之处在于它有145个接收者。然而,其他软件设法阅读这没有任何问题,所以我不认为这是一个问题。
用“畸形元素.”搜索异常大多数情况下,元素的Id值中包含数字,这是不允许的。检查了其他类似的XML文件,它们都有编号,所以不应该是这样的。
发布于 2022-03-18 10:11:58
在设置和调试了一些系统库之后,我发现了它抛出的位置,默认情况下,它只允许100个接收者。要改变这一点,我需要在"Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\Security“中添加一个名为"SignedXmlMaxReferencesPerSignedInfo”的新注册表项,其DWord值大于145,并开始工作。
https://stackoverflow.com/questions/71524954
复制相似问题