谷歌Chrome浏览器中用JavaScript保存已签名XML Visual Basic后端相关问题
问题排查与解决方案
以下是你的代码执行就抛异常的常见原因和修复方案:
- 首先确认抛异常的核心触发点是
xmlSign.LoadXml(txtXML.Text)方法,你可以先加异常捕获逻辑拿到具体报错信息,快速定位问题:
If hidBrowser.Value = "GoogleChrome" Then Dim xmlSign As XmlDocument = New XmlDocument Dim xmlRet As XmlDocument = New XmlDocument 'XmlElement Dim xmlRoot As XmlNode Try ' 先做空内容校验,避免空值直接抛异常 If String.IsNullOrWhiteSpace(txtXML.Text) Then MyAlert("提交的XML内容为空,无法加载") Return End If MyAlert(txtXML.Text) xmlSign.LoadXml(txtXML.Text) ' 原有后续逻辑 Catch ex As Exception ' 输出具体异常信息,可直接定位根因 MyAlert($"XML加载失败:{ex.Message}") End Try End If
- XML格式不合法:Chrome签名后的XML如果存在标签未闭合、特殊字符未转义、XML声明格式错误的问题,LoadXml方法会直接抛异常,你可以把MyAlert输出的XML内容复制到本地XML校验工具中验证格式正确性。
- 编码不匹配:如果签名后的XML实际编码和XML头部
<?xml version="1.0" encoding="xxx"?>声明的编码不一致,LoadXml方法会识别失败,你需要确认前端传递XML到后端时的编码和XML声明编码保持一致。 - 存在非法控制字符:浏览器传递XML字符串时可能会插入零宽空格、异常换行符等XML不支持的控制字符,你可以先对
txtXML.Text做一次非法字符清洗,过滤掉ASCII码小于0x20的非空白字符之后再执行加载操作。
内容的提问来源于stack exchange,提问作者Voley
相关产品推荐
相关产品推荐

