2009-04-28 13 views
3

一度に1つのクライアントのみを許可するWCFサービスを作成する必要があります。他のすべての要求は拒否され、クライアントは後で再試行する必要があります。サービスは要求を完了するのに約1分かかります。WCF:単一のクライアントのみを許可し、他のクライアントは拒否するサービス

[ServiceBehavior(IncludeExceptionDetailInFaults=true, 
        InstanceContextMode=InstanceContextMode.Single, 
        ConcurrencyMode=ConcurrencyMode.Single)] 

を私はクライアントに(複数のスレッドを使用して)サービスを複数回要求した場合、私は第三の要求のタイムアウト例外を取得しますが、サービスが実際に実行しない:

私が試してみました3番目のリクエスト処理中!

+0

私はあなたが必要なもの、これらの設定は、呼び出しがキューに登録されると(サービスがすでにそれらを受信して​​いるので)次々に実行されるようになりますと信じコールは次の場合にエラーを返すということですプロセスの権利は別ですか?私は同様の問題を抱えています。単一のクライアントがwcfチャネルを使用し、他の接続がエラーコードで拒否され、上記の設定を使用する必要があり、以下の答えが接続を許可し、呼び出しをキューに入れる必要があります。 –

答えて

7

「ServiceThrottling」の動作をチェックすることもできます。これにより、サーバー側で同時インスタンス、同時呼び出し、および同時セッションの数を指定できます。これらをすべて1に設定すると、動作。

<behaviors> 
    <serviceBehaviors> 
    <behavior name="Throttled"> 
     <serviceThrottling maxConcurrentCalls="1" 
      maxConcurrentSessions="1" 
      maxConcurrentInstances="1" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

マルク・

関連する問題