QuickBooks Web 连接器总是 returns 404 错误

QuickBooks Web Connector always returns a 404 error

我已经创建了一个 WCF 服务端点供我的 QBWC 调用。我接触过 HTTPS 并实施了合同。

连接器具有以下 QWC 文件:

<?xml version="1.0"?>
<QBWCXML>
  <AppName>QuickBooks Integrator</AppName>
  <AppID></AppID>
  <AppURL>https://<URL>/QuickBookConnector.svc</AppURL>
  <AppDescription>Used to integrate with Quickbooks install</AppDescription>
  <AppSupport>http://<URL></AppSupport>
  <UserName>depQB</UserName>
  <OwnerID>{GUID}</OwnerID>
  <FileID>{GUID}</FileID>
  <QBType>QBFS</QBType>
  <Scheduler>
    <RunEveryNMinutes>2</RunEveryNMinutes>
  </Scheduler>
  <IsReadOnly>false</IsReadOnly>
  <Style>Document</Style>
  <AuthFlags>0xF</AuthFlags>
</QBWCXML>

连接器启动并调用 serverVersion、cientVersion 然后进行身份验证。验证后它说 "Authentication failed." 但是在网络服务中我什至没有检查用户名和密码是的。这就是我在日志中得到的。

20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_serverVersion() : * Calling serverVersion(). 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_serverVersion() : Actual error received from web service for serverVersion call: . For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-serverVersion. 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_serverVersion() : This application does not contain support for serverVersion. Allowing update operation for backward compatibility. 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_clientVersion() : Calling clientVersion() with following parameter: 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.updateWS() : Actual error received from web service for clientVersion call: . For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-clientVersion. 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_clientVersion() : This application does not contain support for clientVersion. Allowing update operation for backward compatibility. 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'DEP QuickBooks Integrator', username = 'depQB' 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_authenticate() : Calling authenticate() with following parameters: 20150811.17:07:20 UTC : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: ***Authentication failed due to following error message. The request failed with HTTP status 404: Not Found.* More info: StackTrace = at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at QBWebConnector.localhost.WCWebServiceDoc.authenticate(String strUserName, String strPassword) at QBWebConnector.localhost.WCWebService.authenticate(String strUserName, String strPassword) at QBWebConnector.SOAPWebService.authenticate(String UserName, String Password) at QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName) Source = System.Web.Services

现在它说它收到 404 错误。但是,我可以采用与 QWC 文件的 "AppURL" 部分完全相同的 URL 并将其放入浏览器并加载服务页面。所以浏览器可以访问服务 URL 但 QBWC 不能?

有什么想法吗?

是我自己想念的。我们所有的服务都由一个激活器包装,这对其他人来说意味着调用不需要服务和操作合同。但是 QBWC 不喜欢这样,并在屏幕上报告 "Authentication Failed" 因为它找不到任何方法。

由于这方面的文档有限,我想为其他遇到此问题的人提供答案。不要忘记这些人。

[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.57.0")]
[ServiceContract(Namespace = "http://developer.intuit.com/")]
[System.Web.Services.WebServiceBindingAttribute(Name = "QuickBookConnectorService", Namespace = "http://developer.intuit.com/")]

[OperationContract(Action = "http://developer.intuit.com/clientVersion")]
[XmlSerializerFormat(Style = OperationFormatStyle.Document, Use = OperationFormatUse.Literal)]

它们与旧 ASMX 方法与 WCF 中提供的示例不同。