当存在名称空间前缀时,无法通过Id属性对元素进行签名:
void Main()
{
var doc = new XmlDocument();
doc.LoadXml("<root xmlns:u=\"myuri\"><test u:Id=\"_0\">Zebra</test></root>");
SignedXml signedXml = new SignedXml(doc);
signedXml.SigningKey = new RSACryptoServiceProvider();
Reference reference = new Reference("#_0");
signedXml.AddReference(reference);
signedXml.ComputeSignature();
}
Run Code Online (Sandbox Code Playgroud)
ComputeSignature() 这里会出现'格式错误的参考元素'应该怎么做?
我对XML文件进行数字签名,但需要签名标记包含名称空间前缀"ds".我研究了很多谷歌,发现了许多相同的问题,但没有令人满意的答案.
我试图手动将"ds"放在文件中,但签名变得无效.标记"SignatureValue"对标记"SignedInfo"进行签名,因此签名变为无效.
有人可以告诉我如何生成标签"SignatureValue"的值,这样我可以在添加前缀"ds"后替换签名吗?
尝试通过BulkRequestTransmitter Web服务提交时,我收到以下错误.对于此消息,组合指南不太有用,当我将SOAP XML与Composition Guide中的SOAP进行比较时,它们似乎是一对一的.我希望另一组眼睛能够看到问题所在.
消息格式不正确和/或无法解释.请查看位于https://www.irs.gov/for-Tax-Pros/Software-Developers/Information-Returns/Affordable-Care-Act-Information的"AIR提交组合和参考指南"第3节中概述的XML标准.-Return-AIR-Program,更正任何问题,然后重试.
我试过的:
base64string格式提交表格数据(如此提交内容).ds为Signature元素添加了前缀.使用此SO帖子以便为Signature元素添加前缀.MIME的BulkTransmitterService请求的格式.HttpWebRequest对象发送; 2.)通过WSDL导入到项目的发送提交请求Service Reference,使用自定义编码器GZip and Mtom Encoding并手动创建SOAP状态请求所需的XML(通过发送HttpWebRequest).更新#1
根据一些新增内容更新了请求.
ds为Signature元素添加了前缀.更新#2
我开始SOAP在Visual Studio的新实例中手动创建.xml文件,根据需要导入模式引用.我在任何类型的应用程序创建之外这样做.
通过这样做,我能够SOAP通过我的应用程序找到一些额外的错误(感谢intellisense!).我发现的错误是在Manifest XML中,因为它们不符合IRS模式.
我将在接下来的24小时内查看这些内容并进行相应更新.
urn:MailingAddressGrp应具有的任何一个孩子urn:USAddressGrp或urn:ForeignAddressGrp.那个孩子应该包含适当的地址元素.我的代码目前缺少直接的孩子urn:MailingAddressGrp.urn1:DocumentSystemFileNmof 的值Form1094C_Request_[TCC]_yyyyMMddThhmmssfffZ.xml不正确.我还不完全确定它应该是什么.