2009-10-06 22 views
5

私は本当のレモンを手に入れました。私は、同じ問題を抱えているか、それを修正する方法を知っている誰かが私に正しい方向を向けることを願っています。WCF致命的な失敗

セットアップ

私は、DBからデータを取得するために、ADO Entity Frameworkのモデルを使用してWCFデータサービスを作成しようとしています。私はWCFサービスリファレンスを追加しました。私は2セットのデータサービスコールを持っています。最初の1つはすべての "ユーザー"のリストを取得して戻ります(このリストには依存するデータ(アドレス、連絡先など)は含まれません)。ユーザーIDを指定するなど住所、連絡先、メッセージ、など、いくつかのより多くの依存情報。これも正常に動作するようです。

レモン

一部のユーザー選択変更した後、すなわち。呼びかけデータサービスからより依存性の高いデータを受信すると、アプリケーションは応答を停止します。

Crash error:

The request channel timed out while waiting for a reply after 00:00:59.9989999. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.

私は、デバッグプロセスを再起動しますが、アプリケーションは、およそ分程度、VS 08を表示し、エラーとメッセージボックスの後までの任意のデータサービスの呼び出しをすることはありません。私は、このエラーの地獄をGoogleで検索しました

Unable to process request from service. ' http://localhost:61768/ConsoleService.svc '. Catastrophic failure.

関連する問題はあるものの、何も使用されていませんでした。私は、問題の原因にとして、いくつかのリードを見つけた

可能な解決策

。クライアントのapp.config内:

  1. maxReceivedMessageSize>より高い値に設定します。 5242880.
  2. receiveTimeout>より高い値に設定します。 00:30:00

私はこれらを無駄に試しました。私はいくつかの数字を変更するだけで解決できない根本的な問題があると考えています。どんなリードも高く評価されます。

答えて

6

私はそれを解決しました。= P。

原因

WCFサービスが正常に動作します。原因はデータサービスコールでした。私が呼び出したたびに、私はデータサービスへの新しい参照をインスタンス化しましたが、決してサービス参照を閉じたり/破棄したりしませんでした。したがって、2回の呼び出しの後、データサービスは最大接続に達して停止します。

ソリューション

適切に任意のデータサービス参照の/処分を閉じていることを確認してください。ベストプラクティスはusingステートメントで囲むことです。

using(var dataService = new ServiceNS.ServiceClient()) 
{ 
    // Use service here   
} 
// The service will be disposed and connection freed. 
+0

は、クライアントとのシングルトンパターンをい??? –

4

あなたの問題を解決してくださってうれしいです。

ただし、usingステートメントの使用については注意する必要があります。この記事を見て:プロパティおよび非同期サービス参照を使用して、問題を作成するよう

http://msdn.microsoft.com/en-us/library/aa355056.aspx

関連する問題