首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >营销云SOAP API检索请求超时异常

营销云SOAP API检索请求超时异常
EN

Stack Overflow用户
提问于 2019-03-07 05:32:37
回答 1查看 744关注 0票数 0

我尝试使用SOAP API从营销云下载订阅者,但在几次迭代后抛出以下异常。

它并不总是失败。有时它完成50次迭代后失败,有时在5次或10次迭代后失败。

下面是我用来发出检索请求的代码:

代码语言:javascript
复制
public List<Subscriber> GetSubscribers(string RequestId = null)
    {
        string message = string.Empty;
        _lstSubscribers = new List<Subscriber>();
        SoapClient client = new SoapClient();
        client.ClientCredentials.UserName.UserName = _username;
        client.ClientCredentials.UserName.Password = _password;

        RetrieveRequest retrieveRequest = new RetrieveRequest();
        retrieveRequest.ObjectType = "Subscriber";

        string[] props = { "Client.ID", "CreatedDate", "EmailAddress", "EmailTypePreference", "ID", "PartnerKey", "SubscriberKey", "UnsubscribedDate" };
        retrieveRequest.Properties = props;

        retrieveRequest.ClientIDs = new ClientID[] { _clientID };
        //retrieveRequest.QueryAllAccounts = true;
        //retrieveRequest.QueryAllAccountsSpecified = true;

        String requestId = RequestId; 
        String response = string.Empty;
        int tryCount = 0;
        try
        {
            RunRetrieveRequest(client, out requestId, out response, retrieveRequest);
        }
        catch (Exception ex)
        {
            if (response == "MoreDataAvailable")
            {
                tryCount++;
                if (tryCount <= 10)
                {

                }

                retrieveRequest.ContinueRequest = requestId;
                RunRetrieveRequest(client, out requestId, out response, retrieveRequest);
            }
        }
        return _lstSubscribers;
    }

    private void RunRetrieveRequest(SoapClient client, out string RequestID, out string Response, RetrieveRequest Request)
    {
        List<Subscriber> lstSubscribers = new List<Subscriber>();
        APIObject[] results = null;
        do
        {
            Response = client.Retrieve(Request, out RequestID, out results);

            Subscriber subscriber = null;
            if (Response != null && results != null)
            {
                foreach (var result in results)
                {
                    subscriber = (Subscriber)result;
                    _lstSubscribers.Add(subscriber);
                }
            }
            Request = new RetrieveRequest();
            Request.ContinueRequest = RequestID;
        } while (Response == "MoreDataAvailable");
    }

这是配置。我曾尝试将超时属性从30更改为59,但无济于事。

代码语言:javascript
复制
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="SoapBinding">
                <security mode="Transport" />
            </binding>
            <binding name="SoapBinding1" />
        </basicHttpBinding>
      <customBinding>
        <binding name="SoapBinding" closeTimeout="00:59:00" openTimeout="00:59:00" receiveTimeout="00:59:00" sendTimeout="00:59:00">
          <security authenticationMode="UserNameOverTransport">
            <secureConversationBootstrap />
          </security>
          <textMessageEncoding messageVersion="Soap11WSAddressingAugust2004" />
          <httpsTransport maxReceivedMessageSize="655360000" />
        </binding>
      </customBinding>
    </bindings>
    <client>
        <endpoint address="https://mySubDomain.soap.marketingcloudapis.com/Service.asmx"
            binding="customBinding" bindingConfiguration="SoapBinding"
            contract="sfmc.Soap" name="Soap" />
    </client>
</system.serviceModel>

我将感谢任何帮助或建议。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-08 00:06:21

我已经能够解决这个问题并发布答案,因为它可能会帮助其他与类似问题作斗争的人。Salesforce营销云API (包括SOAP和REST)已停止支持默认的TLS 1.0协议。因此,在向API发送任何请求之前,我需要添加以下代码。

代码语言:javascript
复制
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls;

下面的链接对此有更多的解释。

WCF Error "This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55032493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档