使用 StateServer 的 ASP.NET 會話混合(可怕!)
我們在會話中儲存了兩個對象。不知何故,來自另一個使用者的一個對像被載入到另一個使用者的會話中。使用者應該無權訪問這些特定數據,並且一旦他們看到它,他們就知道事情很不對勁。
我們有提供給他的數據的視覺證據,除非會話混淆,否則肯定不會發生這種情況。這是一個非常可怕的情況,我們無法弄清楚(我們無法重現它)。對我們來說,唯一的答案是責怪 ASP.NET StateServer 將會話變數混在一起,這是完全不能接受的,並且使我們處於不利地位。
我們的應用程序是在帶有 IIS6 的 Windows Server 2003 上執行的 ASP.NET 2.0 應用程序,使用
StateServer cookieless="false"會話模式和 FormsAuthentication。其他人有這個問題嗎?我們該如何解決?
我們在我以前的公司遇到了這個確切的問題,並花了 3 週的時間來調試它。ASP.NET 為使用者提供了其他人的會話狀態。在調試環境中複製真的是不可能的。
當我們發現它只是 web.config 中的某些內容時的修復。我不完全記得它,所以我花了一些時間Google搜尋。我相信這個問題與輸出記憶體有關。查看“會話和輸出記憶體”下的這篇文章。
<http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineJuly2006en-us.chm>(文章標題為通過避免這 10 種常見的 ASP.NET 來保持站點平穩執行Pitfalls by Jeff Prosise 在 2006 年 7 月版的 MSDN 雜誌上)
如果這聽起來像您的情況,那麼修復可能只是禁用 web.config 中的 enableKernelOutputCache 選項。
祝你好運。