你好,我有一个简单的wcf服务就像这样,一个简单的睡眠20秒并返回一个值的测试方法。我写了一个测试页面,它使用jquery连续调用它10次,它似乎是同时执行的,客户端等待20秒,然后几乎同时从所有服务中获取结果。AspNetCompatibilityRequirements导致WCF网络服务阻止
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,ConcurrencyMode=ConcurrencyMode.Multiple,UseSynchronizationContext=false)]
public class AjaxTestWCFService : IAjaxTestWCFService
但是如果我设置
aspNetCompatibilityEnabled="true"
在web.config中那么无论我做什么,与concurrencymode, usesynchronizationcontext
或实例上下文模式,甚至serviceThrottling
配置,它似乎执行每个Web服务调用顺序,需要2分钟才能返回所有10个请求!
现在我意识到这可能是因为会话,但至少在ASMX服务中,我能够将enablesession设置为false。事实上,我的Web服务方法根本不使用会话。所以你可能会想,为什么要使用aspNetCompatibilityEnabled
。因为我想使用ASP.net模拟和表单身份验证。
我甚至设置
[ServiceContract(SessionMode=SessionMode.NotAllowed)]
所以我的问题是,这是由设计,我如何能实现与ASP.net兼容性并发Web服务请求启用?
实际上是IE 8. Safari和FireFox可以对同一台服务器执行2个以上的请求。我相信IE 8是6.是的,我从另一台机器确认。 – Tuviah 2011-02-16 23:53:20