2016-09-07 21 views
1

同時に複数のスレッドを使用してSilverLightアプリケーションから10の同時非同期WCFサービス呼び出しを行っています。wcf非同期同時呼び出しのタイムアウト例外が発生しました

WCFサービスは、クライアントからの各呼び出しを処理するのに30秒かかります。

3番目のスレッドがWCFサーバーを呼び出すと、タイムアウト例外が発生します。送信タイムアウト設定を10分に変更すると、すべてのスレッドで正常に動作しています。

私の混乱は、すべての同時呼び出しのタイムアウト設定を共通に考えることです。私は基本的なHTTPバインディングを使用していることに注意してください。

+0

サービスはどのように定義されていますか?どのようなインスタンスモードを使用していますか? –

+0

セッションごとのコンテキストと単一の同時実行モード – xavier

答えて

0

あなたの呼び出しを処理するサービスインスタンスが1つしかないようです。これは、(コメントで言うように)セッションごとのインスタンス化と同時実行性を1つに設定した場合に発生します。

呼び出しは同じクライアントセッションに属するものとして扱われるため、スレッド化された単一の単一サービスインスタンスによって順番にキューに入れられ、処理されます。したがって、クライアントのタイムアウト前にディスパッチされないリクエストはすべて失敗します。

インスタントをコールごとに設定する必要があります。これは、リクエストごとにサービスインスタンスが取得されるため、10回のコールをすべて同時に処理する必要があることを意味します。

https://msdn.microsoft.com/en-us/library/ms731193(v=vs.110).aspx

+0

ご返信いただきありがとうございます。私もpercallで試してみましたが、時々同じ例外が発生しています。 – xavier

+0

@xavierサービス操作で行われた作業の性質は何ですか?共有リソースにダウンストリーム依存関係がありますか? –

+0

サービスからストアドプロシージャを呼び出すだけで、毎回処理するのに30秒近くかかります – xavier

関連する問題