2010-08-14 87 views
1

最近,我在我的ASP.Net項目中的一個靜態類中實現了Linq to SQL,這是一個工具類,用於獲取站點上的某些信息加載。當我使用靜態linqtosql datacontext時,我只在現場環境中得到了上述錯誤,但從未在UAT或QA站點上發現過這個問題。 (這意味着這個問題只發生在有很多負載時)。LINQ to SQL - 已經有一個與此命令關聯的開放數據讀取器,必須先關閉

所以我google搜索,發現這篇文章here。所以我做了什麼是我做了我的頁面級數據上下文變量,並將它們傳遞給靜態方法,每次我打電話給他們。是我所做的是正確的,將解決這個問題嗎?/

回答

2

在ASP.Net中,每個請求是一個單獨的線程。所以如果你使用的是靜態資源,你必須處理併發。在你的情況下,似乎兩個數據採集器使用相同的連接。由於你的類是靜態的,當服務器負載很重時,可能會發生兩個請求同時使用相同的datacontext。

如果您真的需要一個靜態資源,您應該使用lock statement來確保只有一個請求在同一時間訪問資源。

+0

那麼如果其他物體不是很快就被釋放出來?我的應用程序仍然會遇到問題嗎?..我想我必須爲此使用非靜態資源> – Aneef 2010-08-15 05:08:11

相關問題