2012-12-20 52 views
2

我有一個WCF服務,我想一次處理來自所有客戶端的一個請求。我希望客戶端A的請求得到處理,客戶端B等待客戶端A完成,然後服務甚至試圖查看它。我認爲下面的代碼完成了這一點。WCF服務Web服務併發性。單個

[ServiceContract] 
public interface IRestServiceImpl 
{...} 

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)] 
public class RestServiceImpl : IRestServiceImpl 
{...} 

我該如何允許一次只處理一個客戶端並強制他人在隊列中等待?

回答

0

您需要控制服務實例的數量以及併發模式。默認情況下,您的服務將被配置爲InstanceContextMode.PerSession。這意味着客戶端A的所有請求都將按順序處理,客戶端B也將按順序處理,但由於它們不使用相同的服務實例,因此不會相互處理。

嘗試修改您的ServiceBehavior如下:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, 
       InstanceContextMode=InstanceContextMode.Single)] 
public class RestServiceImpl : IRestServiceImpl 
{...} 

有關主題的更多信息,請查看MSDN documentation on Sessions, Instancing and Concurrency.

+0

我無意中發現了這些設置張貼的問題,並一直在測試後不久就。看起來他們以我需要的方式阻礙了我的情況。謝謝你的回答。 – Martin