約 10,000 行のデータを WCF サービスに送信する必要があり、WCF サービスはそれをデータベースに 1 つずつ挿入します。このプロセスには 1 時間以上かかります。しかし、運用開始から 1 時間が経過するとすぐに、何らかのタイムアウトが原因であると思われる Service not found 例外が発生します。ただし、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);
サービスが操作全体を完了し、クライアントに応答を返すようにするには、どうすればよいか考えてください。また、この操作を行うためのより良い方法があると思われる場合はお知らせください。