事实证明,我需要使用 webservices.na3.netsuite WSDL。我的印象是常规的“webservices.netsuite”WSDL 会将任何请求定向到正确的服务器。
因此,当通过 SuiteTalk 连接到 NetSuite 帐户时,请务必使用正确的 WSDL 并指定正确的端点以及您的登录凭据。您可以在登录到您的 NetSuite 帐户时通过查看 URL 来检查您的帐户托管在哪个服务器上。
更新
我利用最新的“DataCenterAwareNetSuiteService”类为我尝试连接的当前帐户动态获取正确的数据中心:
class DataCenterAwareNetSuiteService : NetSuiteService
{
private System.Uri OriginalUri;
public DataCenterAwareNetSuiteService(string account, bool doNotSetUrl)
: base()
{
OriginalUri = new System.Uri(this.Url);
if (account == null || account.Length == 0)
account = "empty";
if (!doNotSetUrl)
{
//var temp = getDataCenterUrls(account);
DataCenterUrls urls = getDataCenterUrls(account).dataCenterUrls;
Uri dataCenterUri = new Uri(urls.webservicesDomain + OriginalUri.PathAndQuery);
this.Url = dataCenterUri.ToString();
}
}
public void SetAccount(string account)
{
if (account == null || account.Length == 0)
account = "empty";
this.Url = OriginalUri.AbsoluteUri;
DataCenterUrls urls = getDataCenterUrls(account).dataCenterUrls;
Uri dataCenterUri = new Uri(urls.webservicesDomain + OriginalUri.PathAndQuery);
this.Url = dataCenterUri.ToString();
}
}
上面是这样调用的:
new DataCenterAwareNetSuiteService("*account number*", false);