我有一个用户在使用QuickBooks Web连接器和IIS 7响应ItemQueryRq时收到以下错误。
版本: 1.6
消息: ReceiveResponseXML失败
描述: QBWC1042:ReceiveResponseXML失败 错误消息:运行配置文件中指定的扩展名时出现异常。 - >超出最大请求长度。有关详细信息,请参阅QWCLog。记得打开登录。
日志显示先前的请求
QBWebConnector.SOAPWebService.ProcessRequestXML():从QuickBooks收到的响应:size(bytes)= 3048763
在IIS 7中,允许的最大内容长度设置为30000000,因此我不确定需要更改以允许此响应通过。有人能指出我正确的方向吗?
答案 0 :(得分:0)
很可能,您的Web服务器拒绝Web连接器的HTTP请求,因为您尝试向其发送过多数据。但是很难确定,因为它看起来不像你有Web Connector in VERBOSE mode,并且你没有真正发布足够的日志以便能够看到发生的其他事情,而且你没有'发布您发送的ItemQuery请求或了解您在回复中收到的项目数。
如果我不得不猜测,你发送一个非常通用的ItemQueryRq来尝试获取所有项目,这很可能会返回大量数据,从而让IIS拒绝HTTP请求。
每当您使用Web连接器获取大量数据时,您应该使用 iterators 。迭代器允许您将结果集拆分为更小的块。
答案 1 :(得分:0)
如果您只需确定QB中是否存在某个项目,您只需将IncludeRetElement添加到ItemQuery
即可所以你应该发布像
这样的东西<ItemQueryRq requestID="55">
<FullName>Prepay Discount</FullName>
<IncludeRetElement>ListID</IncludeRetElement>
</ItemQueryRq>
在Item查询响应中,只需检查状态代码。如果它等于500则意味着您应该将项目推入QB,如果它等于0则表示该项目存在
该解决方法将在您的响应中节省大量字节