2017-07-06 5 views
0

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?

Antwort

0

Gelöst von [XmlSerializerFormat]-IService Zugabe, so

Antwort-werden
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header /> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <authenticateResponse xmlns="http://developer.intuit.com/"> 
     <authenticateResult> 
     <string>d0297d33-859d-4259-a598-5fbf328bac3b</string> 
     <string>nvu</string> 
     <string>3</string> 
     <string>60</string> 
     </authenticateResult> 
    </authenticateResponse> 
    </s:Body> 
</s:Envelope> 
+0

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

0

Seite 21 des QBWC-Programmierhandbuchs.

Ihre Rückkehr zum Authentifizierungsaufruf ist ein String-Array mit maximal vier Strings.

Das erste Mitglied des Arrays ist ein Sitzungstoken, bei dem es sich um eine GUID oder etwas anderes handeln kann, das Sie zum Identifizieren der Sitzung verwenden möchten. Dieses Token wird von QBWC bei nachfolgenden Rückrufen in der Sitzung zurückgegeben.

Das zweite Mitglied des String-Arrays kann eine Vielzahl von Dingen enthalten.

a. Wenn der Benutzername und das Kennwort im Authentifizierungsaufruf ungültig sind, würden Sie den Wert "nvu" angeben.

b. Wenn andererseits die Benutzerdaten gültig sind, aber Sie für diesen Benutzer keine Arbeit zu tun haben, würden Sie den Wert "none" angeben.

c. Wenn Sie für diesen Benutzer arbeiten müssen, können Sie den vollständigen Pfadnamen des Unternehmens angeben, das im aktuellen Update verwendet werden soll.

d. Wenn Sie das QuickBooks-Unternehmen, das derzeit auf Clientseite geöffnet ist, verwenden möchten, geben Sie einfach eine leere Zeichenfolge ein.

Das optionale dritte Mitglied des String-Arrays enthält die Anzahl der Sekunden, die bis zur nächsten Aktualisierung gewartet werden müssen. Sie würden dies verwenden, um zu sagen, dass der QBWC-Client Sie für eine bestimmte Zeit nicht belästigt.

Das optionale vierte Mitglied des Zeichenfolgenarrays enthält die Anzahl der Sekunden, die als MinimumRunEveryNseconds-Zeit für Ihren Webdienst verwendet werden müssen, wodurch QBWC mitgeteilt wird, wie häufig Ihr Webdienst kontaktiert werden muss.

Ich bin mir nicht sicher, warum die Authentifizierung am Ende des Dokuments anders ist.

Verwandte Themen