2009-12-11 33 views
1

我們剛剛在我們的網絡應用程序中遇到了這個錯誤,並立即在這裏發現文章Hashtable insert failed. Load factor too high. - ASP.NET 2.0哈希表插入失敗。負載係數太高。 .NET 2.0 SP2

但是,此指向的修補程序(http://support.microsoft.com/?id=927579)已包含在.NET 2.0 SP1(http://support.microsoft.com/kb/945757)中。

重新啓動WWW發佈服務使其消失。有沒有人知道這可能發生的任何其他有效條件?如何確保它們不會發生?

謝謝。

編輯:我相信這也可能與我們在存儲在Application範圍中的Dictionary對象時遇到的另一個問題有關。我已經更改了代碼以使用Application.Lock()/ Unlock()來寫入Dictionary,所以我們將看到這些更改發佈後是否會再次出現。

任何人都可以給出更多的指針,可能的原因不只是一個框架錯誤將高度獎勵讚美和讚美!

+0

您真的使用的Hashtable是否有可能具有太高的負載因子?這可能是因爲你需要改進散列函數,使它更加獨特,減少了碰撞的機會。 – 2009-12-11 13:41:49

+0

也許...在這種情況下,我想我的問題更多地涉及到究竟會導致這種異常!所有相關的谷歌搜索指向框架錯誤,並通常最終在上述修補程序,但我發現大多數文章是2007年和更早。 – Town 2009-12-11 14:24:18

+0

除非你有一個數百萬或更多的條目哈希表,我不能看到這會發生。在這種情況下,你應該真的使用數據庫... – leppie 2009-12-15 11:55:02

回答

0

僅供參考,有2.0 SP2和3.5 SP1的修補程序,可能解決此問題:http://code.msdn.microsoft.com/KB968432

我要補充的是,第一個問題似乎已經被列入Application.Lock的(解決)/解鎖()在我原來的文章中提到(這是一個艱難的測試,但它是完全隨機的!)。後續的「哈希表插入失敗」錯誤發生在ReflectGetAttributes()根據文章,這是該修補程序聲稱要解決的問題。