我需要将大约 10,000 行数据发送到 WCF 服务,然后将其一一插入到数据库中。这个过程需要1个多小时。但是,从开始运行 1 小时后,我会收到一个未找到服务的异常,我认为这是由于超时造成的。但是,只要 Visual Studio 开发服务器继续运行,服务就会继续将此数据插入数据库。
我尝试在客户端和服务端将所有超时值设置为 2 小时,但这没有帮助。
服务的 web.config:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDService" allowCookies="true" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" closeTimeout="02:00:00"
openTimeout="02:00:00" receiveTimeout="02:00:00" sendTimeout="02:00:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
在客户端(在初始化服务客户端时)
this.binding.ReceiveTimeout = TimeSpan.FromHours(2);
this.binding.OpenTimeout = TimeSpan.FromHours(2);
this.binding.SendTimeout = TimeSpan.FromHours(2);
this.binding.CloseTimeout = TimeSpan.FromHours(2);
this.binding.MaxBufferSize = int.MaxValue;
this.binding.MaxReceivedMessageSize = int.MaxValue;
我做了一些搜索,在很多地方都建议增加 OperationTimeout。所以我尝试了它但没有任何成功。
((IContextChannel)base.Channel).OperationTimeout = new TimeSpan(2, 0, 0);
请给出一些想法,我应该尝试什么,以便服务完成整个操作并将响应发送回客户端。另外,如果您认为有更好的方法来执行此操作,请告诉我。