You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML RSA数字签名纯数字URI Reference报错问题求助

XML RSA签名时纯数字ID引用报错的解决办法

问题本质:XML规范中,ID类型的属性值必须符合XML Name定义——不能以纯数字开头,必须以字母、下划线(_)或冒号(:)作为起始字符。.NET的XML数字签名组件严格遵循这一规范,因此当你使用纯数字作为ID并通过#纯数字格式的URI引用时,会触发“引用元素格式错误”的提示。

可行解决办法

方法1:修改XML的ID值(推荐)

给纯数字ID添加字母/下划线前缀,使其符合XML Name规则:

修改后的XML示例:

<book id="bk_12345">
    <title>Programming .NET Security</title>
    <author>Adam Freeman</author>
    <author>Allen Jones</author>
</book>

对应的VB.NET引用代码:

reference = New Reference
reference.Uri = "#bk_12345"

方法2:通过XPath定位目标元素(无需修改XML时使用)

如果无法改动原有XML的ID,可放弃URI引用,改用XPath直接定位要签名的元素:

reference = New Reference()
' 用XPath匹配id为"12345"的book元素
reference.AddTransform(New XmlDsigXPathTransform("//book[@id='12345']"))

这种方式能绕过纯数字ID的格式限制,正常完成签名操作。

内容的提问来源于stack exchange,提问作者PorotoZone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:45:46