Ich verwende QuickBooks WebConnector 2.2.0.71 und meinen WCF-Webdienst (unter .NET 4.6.1). Nach dem Drücken von "Update ausgewählt" in WebConnector serverVersion
und clientVersion
Anfragen erfolgreich verarbeitet, aber authenticate
fehlgeschlagen:QBWC: "Index außerhalb des gültigen Bereichs" in do_authenticate()
20170705.06:31:00 UTC : QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="username"><password=<MaskedForSecurity>
20170705.06:31:00 UTC : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message.
Index Out Of Range.
More info:
StackTrace = в QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName)
Source = QBWebConnector
Antwort meines WCF-Dienst (von WCF-Testclient):
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<authenticateResponse xmlns="http://developer.intuit.com/">
<authenticateResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:string>a3f10876-e027-419d-8dd8-3752a852ddae</a:string>
<a:string>nvu</a:string>
<a:string>3</a:string>
<a:string>60</a:string>
<a:string>60</a:string>
</authenticateResult>
</authenticateResponse>
</s:Body>
</s:Envelope>
Docs sagt: „Ihr Rückruf muss ein String-Array mit 4 möglichen Elementen zurückliefern. Das erste Element enthält entweder NONE oder NVU (ungültiger Benutzer) oder BUSY., oder leerer String oder eine Zeichenfolge, die der Name der QB-Firma ist. " aber in Samples ist das erste Element guid token, also sende ich Array von 5 Elementen.
Derselbe Fehler ist aufgetreten, wenn ich kein Array sende, aber Int-Wert, also denke ich - vielleicht stimmt etwas mit meinem XML nicht?
Bei Verwendung von [SoapCore] (https://github.com/DigDes/SoapCore), vergessen Sie nicht, SoapSerializer zu setzen: 'app.UseSoapEndpoint (settings.QbWcServiceRelativeUrl, new BasicHttpBinding() { Namespace = WfcService.Namespace }, SoapSerializer.XmlSerializer); ' –
smg