你好,我有一個簡單的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