Web 服务生成错误 xml: 十六进制值 0x00 是无效字符错误
Web service generates bad xml: Hexadecimal value 0x00 is a invalid character error
VS 2019 VB.NET 和 c#
我有一个 Web 服务调用另一个 Web 服务。提供者 Web 服务 return 是一个对象数组。消费者 Web 服务尝试将调用结果分配给变量并抛出错误:
Hexadecimal value 0x00 is a invalid character, line 1, position nnnnn
请注意,我不会将结果与 xml 相互转换,'system' 正在这样做。
我检查了数据,虽然复杂但没问题。我通过反复试验发现,如果我删除了一个恰好设置为 Nothing 的字段,它就可以工作(有数百个字段,许多字段什么都没有)。我看不出我删除的字段有什么特别之处。所以听起来有问题。
我认为这可能是一个 unicode 问题,所以我向提供程序 Web 服务添加了一个全球化条目 web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
没有效果。
所以我有一个对象数组(我将其简化为 1 的计数,仍然出现错误),我正在尝试 return 和提供程序 Web 中的 return 语句之间的某处服务以及将结果分配给消费者 Web 服务中的变量我变得很糟糕 xml。
我想我可以自己将它转换为 xml,确保它是有效的,然后提供它,但它似乎应该按原样工作。
关于如何追踪这个的任何想法?
附录
应该更清楚一点。我从 Web 方法 returning 了一组用户定义的对象,因此数据被序列化为 XML SOAP 响应。如果我使用邮递员查看响应,那么 soap xml 响应是有效的,但是当远程服务调用 Web 方法时,我会看到此错误。所以首先我不确定错误是在哪里引入的......它看起来不像是网络方法有问题,邮递员可以调用它并获得有效xml。但是我的另一个程序,恰好也是一个 Web 服务,可能会从请求中变坏 xml。
0x0
是 NUL 字符,在 XML.
中是不允许的
您无法通过更改字符编码来解决此问题。
您的选择:
- 修复正在发送 not-well-formed XML 的提供商 Web 服务。 (这是非常受欢迎的。)
- 尝试修复损坏的响应,然后再将其处理为 XML。 (你可能有更多的控制权来改变你的结局,但从长远来看 运行,推动服务提供商修复他们损坏的服务对各方都是最好的。)
另请参阅:
- Is there any difference between 'valid xml' and 'well formed xml'?
VS 2019 VB.NET 和 c#
我有一个 Web 服务调用另一个 Web 服务。提供者 Web 服务 return 是一个对象数组。消费者 Web 服务尝试将调用结果分配给变量并抛出错误:
Hexadecimal value 0x00 is a invalid character, line 1, position nnnnn
请注意,我不会将结果与 xml 相互转换,'system' 正在这样做。
我检查了数据,虽然复杂但没问题。我通过反复试验发现,如果我删除了一个恰好设置为 Nothing 的字段,它就可以工作(有数百个字段,许多字段什么都没有)。我看不出我删除的字段有什么特别之处。所以听起来有问题。
我认为这可能是一个 unicode 问题,所以我向提供程序 Web 服务添加了一个全球化条目 web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
没有效果。
所以我有一个对象数组(我将其简化为 1 的计数,仍然出现错误),我正在尝试 return 和提供程序 Web 中的 return 语句之间的某处服务以及将结果分配给消费者 Web 服务中的变量我变得很糟糕 xml。
我想我可以自己将它转换为 xml,确保它是有效的,然后提供它,但它似乎应该按原样工作。
关于如何追踪这个的任何想法?
附录
应该更清楚一点。我从 Web 方法 returning 了一组用户定义的对象,因此数据被序列化为 XML SOAP 响应。如果我使用邮递员查看响应,那么 soap xml 响应是有效的,但是当远程服务调用 Web 方法时,我会看到此错误。所以首先我不确定错误是在哪里引入的......它看起来不像是网络方法有问题,邮递员可以调用它并获得有效xml。但是我的另一个程序,恰好也是一个 Web 服务,可能会从请求中变坏 xml。
0x0
是 NUL 字符,在 XML.
您无法通过更改字符编码来解决此问题。
您的选择:
- 修复正在发送 not-well-formed XML 的提供商 Web 服务。 (这是非常受欢迎的。)
- 尝试修复损坏的响应,然后再将其处理为 XML。 (你可能有更多的控制权来改变你的结局,但从长远来看 运行,推动服务提供商修复他们损坏的服务对各方都是最好的。)
另请参阅:
- Is there any difference between 'valid xml' and 'well formed xml'?