我正在尝试使用CRM web服务将联系人记录插入/更新到CRM 2011(内部部署RO15)。我使用SSIS包从我的源中获取数据,并使用C#(脚本组件)将它们插入到CRM中。
最初,我使用ContactInput_ProcessInputRow(ContactInputBuffer row)方法一次使用一行。这将一次插入一行,在阅读这篇文章后,我改为使用ContactInput_ProcessInput(ContactInputBuffer Buffer)方法进行批量导入。
当它开始插入行时,这似乎首先解决了问题。但在大约1500行之后,我得到了超时错误。通常,我会在配置文件中更改客户端超时设置,但因为这是通过脚本组件完成的,所以我看不到配置文件。我还将服务器端的超时限制增加到24小时。
我使用的C#代码与上面文章(链接)中的大容量插入代码相同。我已经将缓冲区大小更改为10,因为这是Scribe使用的,并且与我们的CRM 2011设置配合良好。
如何解决此超时问题?我预计每次集成将有大约5K条记录。
感谢您的回复。我想我已经通过在app.config文件(脚本组件中)中添加以下代码块来解决这个问题。
<system.web>
<httpRuntime executionTimeout="12000"/>
</system.web>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="longTimeoutBinding"
receiveTimeout="02:00:00" sendTimeout="02:00:00" closeTimeout="02:00:00" openTimeout="02:00:00">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="longTimeoutService"
behaviorConfiguration="longTimeoutBehavior">
<endpoint address="net.tcp://localhost/longtimeout/"
binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" />
</service>
</services>
</system.serviceModel>
我做了一些后续测试,我成功地插入/更新了大约7K的记录,没有出现任何错误。我希望这能帮助任何像我一样迷失的灵魂!