I need to create a WCF service that only allows a single client at a time. All other requests should be rejected, and the client must retry again later. The service will take around a minute to complete the request.
I've tried:
[ServiceBehavior(IncludeExceptionDetailInFaults=true,
InstanceContextMode=InstanceContextMode.Single,
ConcurrencyMode=ConcurrencyMode.Single)]
but if I request the service multiple times (using multiple threads) in a client, I get a timeout exception on the 3rd request, but the service does actually perform the 3rd requests processing!
You could also check out the "ServiceThrottling" behavior, which allows you to specify on the server side how many concurrent instances, concurrent calls and concurrent sessions you want to support - set them all to 1, and you should have your behavior.
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="1"
maxConcurrentSessions="1"
maxConcurrentInstances="1" />
</behavior>
</serviceBehaviors>
</behaviors>
Marc
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With