2014-01-19 93 views
0

在我的頁面上,我對一些數據服務進行了5或6次異步調用,以獲取頁面上圖形的數據。答案每次回來一次,每次等待2-3秒,而不是儘快完成。多個異步jquery調用似乎由ASP.NET服務器同步處理

我有jquery代碼工作得很好 - 根據fiddler和chrome,調用都是在同一時間完成的,但服務器似乎一次只能處理一個(如他們逐個返回所證明的那樣)。

Chrome Network View

看來,ASP.NET側依次處理。在這方面的服務是在服務類 標準WebGet操作,我已經試過了標記:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)] 

,但似乎並沒有幫助。暫停調試器在任何時候只顯示我的代碼中的一個線程。服務代碼只是EntityContext創建,一個linq查詢,轉換爲ajax,返回。

有沒有人有任何提示調試此問題?我即將使用intellitract來查看方法等的實際調用時間,因此請嘗試確定它正在等待的內容。

+0

什麼版本/版本的Windows/IIS是這個測試上運行?它看起來更像是IIS具有2/3請求的併發性,這與在非服務器版本的Windows上進行開發是一致的。 – Aron

回答

2

這是最可能的原因。你的應用是:

  1. 使用ASP.net會話
  2. 使用ASP.net兼容模式

在ASP.net,請求被依次處理,如果客戶端具有會話和請求處理器具有讀/寫訪問會話。

如果您的WCF中不需要任何ASP.net功能,請在web.config中關閉ASP.net compatibility mode

<serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> 

,並移除任何

[AspNetCompatibilityRequirements(RequirementsMode = 
         AspNetCompatibilityRequirementsMode.Required)] 

編輯:Here is a blog discussing the session problem but for ASP.net MVC

+0

看起來很有前途(說實話,我不喜歡他們有那麼高的開銷)!我可能不得不尋找另一種保護我的數據服務免遭網絡抓取和濫用的方式 - 如果是這種情況 - 任何想法? – TheSoftwareJedi

+0

網絡抓取和誤用?嗯......這是你在WCF中使用的ASP.net功能嗎?你的意思是授權嗎? – LostInComputer

+0

是的,授權。確認授權。我甚至沒有開始研究它是否會成爲問題(它現在不檢查auth),但它會是什麼? – TheSoftwareJedi