我的wcf服务配置有问题。我希望每次调用我的服务时都会创建一个新的服务实例。对于并发,我希望一个调用在另一个调用开始之前完成。
因此,如果我有一个像这样的服务:
[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerCall)]
public class MyService: IMyService
{
public bool MyServiceOp()
{
Debug.WriteLine("thread "+
Thread.CurrentThread.ManagedThreadId.ToString());
Debug.WriteLine("start operation ");
Do_work()
Debug.WriteLine("end operation");
return true;
}
}
当我在一个循环中使用多个调用来调用它时,跟踪给出:
thread 1
thread 2
start operation
start operation
end operation
end operation
虽然我想要这个:
thread 1 start operation end operation
thread 2 start operation end operation
这个是可能的吗?谢谢
发布于 2011-08-19 22:13:45
您所拥有的将导致该服务的一个新实例随着每个请求而旋转(这就是PerCall所做的事情)。
这应该可以做到:
[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single, InstanceContextMode=InstanceContextMode.Single)]
仅供参考,如果你这样做,你将失去所有的可伸缩性。您将拥有单个线程服务的单个实例来响应所有请求。
https://stackoverflow.com/questions/7122608
复制相似问题