使用 QuickBooks Web 连接器的身份验证问题:未将对象引用设置为对象的实例

问题描述:

我有一个 SOAP 服务器来处理来自 QuickBooks Web 连接器的连接.它调用的第一个方法是身份验证",它正确返回它期望的数据,但是它给了我错误

I have a SOAP server to handle connections from the QuickBooks Web Connector. The first method it calls is "authenticate" which correctly returns the data it expects, however it's giving me the error

QBWC1012: Authentication failed due to following error message.
Object reference not set to an instance of an object.

我对此一无所知,网上似乎没有解决方案.错误消息并没有真正让我继续下去.

I'm at a loss on this one and there doesn't seem to be a solution on the web. The error message doesn't really give me anything to go on.

如果有人知道我可以在哪里寻找更多相关信息,我将不胜感激.

If anyone has any idea where I can look for more information about this I'd be grateful.

这是该问题的 WC 错误日志:

Here is the WC error log for the issue:

20140215.17:15:32 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20140215.17:15:32 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20140215.17:15:32 UTC    : QBWebConnector.WebServiceManager.DoUpdate() : Update completed with errors. See log (QWClog.txt) for details.
20140215.17:15:32 UTC    : UpdateThisScheduledApp() : QBWC1031: Update completed with some error. Application has been notified of the error accordingly. See QWCLog for further information.
20140215.17:16:30 UTC    : UpdateThisScheduledApp() : Password management - Started
20140215.17:16:30 UTC    : UpdateThisScheduledApp() : Password management - Ended
20140215.17:16:30 UTC    : UpdateThisScheduledApp() : Performing SCHEDULED UPDATE for application = PManager SOAP
20140215.17:16:30 UTC    : QBWebConnector.RegistryManager.getUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock = FALSE
20140215.17:16:30 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to True
20140215.17:16:30 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session locked *********************
20140215.17:16:30 UTC    : QBWebConnector.SOAPWebService.instantiateWebService() : Initiated connection to the following application.
20140215.17:16:30 UTC    : QBWebConnector.SOAPWebService.instantiateWebService() : AppName: PManager SOAP
20140215.17:16:30 UTC    : QBWebConnector.SOAPWebService.instantiateWebService() : AppUniqueName (if available): PManager SOAP
20140215.17:16:30 UTC    : QBWebConnector.SOAPWebService.instantiateWebService() : AppURL: https://[SNIP]/pmanager/soapserver.php
20140215.17:16:30 UTC    : QBWebConnector.SOAPWebService.do_serverVersion() : *** Calling serverVersion().
20140215.17:16:31 UTC    : QBWebConnector.SOAPWebService.do_serverVersion() : Received from serverVersion() following parameter:<serverVersionRet="">
20140215.17:16:31 UTC    : QBWebConnector.SOAPWebService.do_serverVersion() : This application sent a null for server version. Allowing update operation.
20140215.17:16:31 UTC    : QBWebConnector.SOAPWebService.do_clientVersion() : *** Calling clientVersion() with following parameter:<productVersion="2.1.0.30">
20140215.17:16:32 UTC    : QBWebConnector.SOAPWebService.do_clientVersion() : Received from clientVersion() following parameter:<clientVersionRet="">
20140215.17:16:32 UTC    : QBWebConnector.SOAPWebService.do_clientVersion() : This application agrees with the current version of QBWebConnector. Allowing update operation.
20140215.17:16:32 UTC    : QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'PManager SOAP', username = '[SNIP]'
20140215.17:16:32 UTC    : QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="[SNIP]"><password=<MaskedForSecurity>
20140215.17:16:33 UTC    : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message.
Object reference not set to an instance of an object.
More info:
StackTrace =    at QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName)
Source = QBWebConnector
20140215.17:16:33 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20140215.17:16:33 UTC    : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20140215.17:16:33 UTC    : QBWebConnector.WebServiceManager.DoUpdate() : Update completed with errors. See log (QWClog.txt) for details.
20140215.17:16:33 UTC    : UpdateThisScheduledApp() : QBWC1031: Update completed with some error. Application has been notified of the error accordingly. See QWCLog for further information.

正在发送到 WC 的 SOAP 响应:

SOAP response being sent to WC:

<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:authenticateResponse xmlns:ns1="http://developer.intuit.com/">
    <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]">
        <item xsi:type="xsd:string">8d51474324d94e25aa1e6670da584204</item>
        <item xsi:type="xsd:string">C:/Path/File.QBW</item>
    </return>
</ns1:authenticateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我应该早点更新这个...问题原来是版本号,我试图使用不支持某些的旧版本特征.在调用 WC 时更改版本解决了它.

I should have updated this sooner... The problem turned out to be the version number, I was trying to use an older version that didn't support some features. Changing the version in the call to the WC solved it.