生成 XML 文档的 Intuit QBO SDK 更新账单错误 ItemElementName 的值与 System.Decimal 的类型不匹配

Intuit QBO SDK Update Bill error generating the XML document Value of ItemElementName mismatches the type of System.Decimal

我正在使用 Intuit QBO SDK v3 Intuit.Ipp.QueryFilter.QueryService(Of Bill) 来获取按 Bill.Id 过滤的账单集合。集合已成功填充。我只想修改 Bill 的一些 ItemBasedExpenseLineDetail 成员的 BillableStatus 并用 Intuit.Ipp.DataService.DataService.Update(Of Bill) 更新它。无论我是否实际修改 Bill 的任何属性,Update 方法都会生成以下错误:

Intuit.Ipp.Exception.SerializationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException:生成 XML 文档时出错。 ---> System.InvalidOperationException: ItemElementName 的值与 System.Decimal 的类型不匹配;您需要将其设置为 Intuit.Ipp.Data.ItemChoiceType.@UnitPrice。 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write163_ItemBasedExpenseLineDetail(String n, String ns, ItemBasedExpenseLineDetail o, Boolean isNullable, Boolean needType) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write181_Line(String n, String ns, Line o, Boolean isNullable, Boolean needType) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write185_Bill(String n, String ns, Bill o, Boolean isNullable, Boolean needType) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write186_Bill(对象 o) --- 内部异常堆栈跟踪结束 --- 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle,字符串 id) 在 System.Xml.Serialization.XmlSerializer.Serialize(流流、对象 o、XmlSerializerNamespaces 命名空间) 在 Intuit.Ipp.Utility.XmlObjectSerializer.Serialize(对象实体) --- 内部异常堆栈跟踪结束 --- 在 Intuit.Ipp.Utility.XmlObjectSerializer.Serialize(对象实体) 在 Intuit.Ipp.Core.Rest.RestHandler.PrepareRequest(RequestParameters requestParameters,Object requestBody,String oauthRequestUri) 在 Intuit.Ipp.DataService.DataService.Update[T](T 实体)

Bill 的所有 ItemBasedExpenseLineDetail 成员的值似乎都是 Intuit.Ipp.Data.ItemChoiceType.UnitPrice,如 Watch 或 Immediate Window 所示,例如:

?DirectCast(qboItem.Line(0).AnyIntuitObject, Intuit.Ipp.Data.ItemBasedExpenseLineDetail).ItemElementName

单价{2}

知道如何在没有此错误的情况下执行更新或进一步查看吗?

Aaaaaand,我一发布这个问题,就在 Intuit.Developer 社区

上找到了答案

I guess you have the default setting from SDK where request format is XMl and response is Json.

This causes serialization issues which you have mentioned above.

Please add the following lines in your code to have either both request/response in xml or boht in json format.

context.IppConfiguration.Message.Request.SerializationFormat = Intuit.Ipp.Core.Configuration.SerializationFormat.Json;

context.IppConfiguration.Message.Response.SerializationFormat = Intuit.Ipp.Core.Configuration.SerializationFormat.Json;