WCF:仅允许单个客户端拒绝其他客户端的服务

时间:2009-04-28 18:39:22

标签: wcf web-services singleton

我需要创建一次只允许一个客户端的WCF服务。应拒绝所有其他请求,客户端必须稍后再次尝试。该服务大约需要一分钟才能完成请求。

我试过了:

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

但如果我在客户端多次请求服务(使用多个线程),我会在第3个请求上获得超时异常,但该服务确实会执行第3个请求处理!

1 个答案:

答案 0 :(得分:8)

您还可以查看“ServiceThrottling”行为,它允许您在服务器端指定要支持多少并发实例,并发调用和并发会话 - 将它们全部设置为1,您应该拥有自己的行为

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

马克