我有一个公开WCF服务的Winforms应用程序。
从IIS,我尝试使用该服务。在2台不同的计算机上,我尝试调用test1.aspx
,然后在Winforms应用程序中调用WCF。
test1.aspx => from computer 1 => First Call
test1.aspx => from computer 2 => Second Call
我看到WCF是单线程的,在它开始处理CALL 2之前,它需要完成处理CALL 1。
[ServiceBehavior(IncludeExceptionDetailInFaults = true,
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode=InstanceContextMode.PerSession)]
我有Windows Server 2008 R2和IIS 7.5
任何人都可以帮助我吗?
答案 0 :(得分:10)
在UI线程中托管服务时,WCF的行为可能与您的情况不同。默认情况下,WCF处理加入Windows消息循环,因此请求处理不仅会变为串行,而且还会停止WinForms UI中的所有事件处理(应用程序将冻结)。
要避免此行为,您必须明确说明您不希望在UI线程中托管服务:
[ServiceBehavior(UseSynchronizationContext = false)]