在我的項目中,我配置了.NET的會話以進入數據庫。 我也有一個global.asax實現Session_Start()。 在Session_Start()中,我向會話寫入三件事:.NET會話處理如何工作?如果Cookie被禁用,會話就會佔用所有內存
- 會話開始的時間。
- 用戶的主機地址。
- 包裝用戶代理的可序列化設備對象。
現在的問題是,不允許cookies的用戶不允許使用會話cookie。 (通過將站點URL放入IE的受限站點可輕鬆重現)。
如果我繼續刷新(將手指放在F5上),將爲每個請求( - >無會話cookie)創建一個新會話。不久之後,Web服務器進程增長到幾百兆字節。 如果使用IIS7或Cassini本地Web服務器,則無關緊要。
現在的問題是:內存不會在會話超時之前釋放。這裏的邏輯是什麼,如果會話應該真的去數據庫? .NET將它們保存在內存中多久?最終,你甚至會遇到Out of Memory異常!
有人知道嗎?如何檢測和防止這種(幾乎是惡意的)「攻擊」?
勒
他們應該去數據庫,因爲我沒有定義「進程中」會話,但在web.config中處理數據庫會話。即使不尋常,我發現一個不接受cookie的客戶端可能會讓整個服務器停止運行.net項目,這更加不尋常。正如我所說:最終,Web服務器將耗盡內存並回收。這是有問題的 – Krumelur 2010-10-30 19:55:40