反序列化 XML - 值对于无符号字节来说太大或太小

Deserializing XML - Value was either too large or too small for an unsigned byte

我正在使用他们的 API 从 SagePay 下载交易数据。调用的结果给了我一个 XML 字符串,然后我将其反序列化并存储在 class.

每次调用最多检索 50 条记录,我在给定的 datetime 范围内进行多次调用,直到检索到所有记录。这对于第一个 X 调用工作正常,但随后出现错误:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll

Additional information: There is an error in XML document (1, 141).

Inner Exception: {"Value was either too large or too small for an unsigned byte."}

XML document (1, 141). 中的值在每次尝试时并不总是保持相同。如果我看这个位置的字符,我没有发现任何错误。

在此示例中,字符 141 是 <totalrows> 中的“t”:

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><vspaccess><errorcode>0000</errorcode><transactions><startrow>251</startrow><endrow>300</endrow><totalrows>16684</totalrows>

251 的 <startrow> 表明在这个错误的调用之前有 5 个成功的调用。

反序列化代码:

XmlSerializer serializer = new XmlSerializer(typeof(vspaccess));
StringReader rdr = new StringReader(xmlDoc.InnerXml);
vspaccess sageTransactions = (vspaccess)serializer.Deserialize(rdr);

vspaccess是VS2013生成的class(特殊粘贴)

我错过了什么?

我显然不能 post 所有 XML 因为它是实时交易信息,但如果我遗漏了任何必需的信息,请告诉我

读取错误。无符号字节的最大大小为 255——因此 300 的值就太大了。

16684 也太大了。不要挂在错误报告的列号上。查看错误消息和您正在加载的内容。