从Web服务中提取大量数据,避免C#中的超时

时间:2018-08-01 13:07:05

标签: c# xml web-services soap ssis

我工作的学校拥有提供网络服务的CRM。我正在尝试在SSIS脚本任务中使用Web服务,以便制作联系人和所有属性的XML源文件。这样,我可以设置软件包以填充用于报告服务的MS SQL数据库。我只想一开始就拉起所有东西,然后再制作和更新工作流程。

我要通过Web服务使用的数据量遇到问题。在线程完成之前,服务器端的连接已关闭。

我是否应该逐个循环浏览这些数据?还是有一些针对此问题的Web服务特定解决方案?

到Web服务的链接是:http://services02.askadmissions.net/ws/bridge.asmx

这是我的代码

bridge.Bridge connect = new bridge.Bridge();
connect.Timeout = -1;

String ClientName = "blah", PassKey = "blahblahblah";

XmlDocument GetAllAttributesResponse = new XmlDocument();
XmlDocument AttributesXml =            new XmlDocument();                        
XmlDocument GetContactsResponse =      new XmlDocument();
XmlDocument GetContactCountResponse =  new XmlDocument();

//Pulling all existing attributes through web service (Approximately 897 attributes)
GetAllAttributesResponse.LoadXml(connect.GetAllAttributes(ClientName, PassKey));

//Formatting attributes to be so they can be used in the GetContacts operation
using (XmlWriter w = XmlWriter.Create(AttributesXml.CreateNavigator().AppendChild())) {
    w.WriteStartElement("attributes");

    foreach (XmlNode attribute in GetAllAttributesResponse.SelectNodes("//attribute/name")) {
        w.WriteStartElement("attribute");
        w.WriteNode(attribute.CreateNavigator(), false);
        w.WriteEndElement();
    }
}       

//Storing total contact count for GetContacts Operation. (426,000 contacts)
GetContactCountResponse.LoadXml(connect.GetContactCount(ClientName, PassKey));            
int TotalContactCount = Int32.Parse(GetContactCountResponse.SelectSingleNode("//count").InnerText);

//This is the query that is causing the Web Exception
GetContactsResponse.LoadXml(connect.GetContacts(ClientName, PassKey, 1, TotalContactCount, String.Empty, AttributesXml.InnerXml, String.Empty));

0 个答案:

没有答案