2009年6月3日 星期三

IE 8 + Asp.Net + Forms Authentication + Multi User Test

已改用 IE8 好一段時間了。
最近,測試 asp.net 寫好的程式時,突然發現以前的登入測試邏輯不通了。

以往,使用 IE 6/7 時,測試不同帳號在 Asp.Net + Forms Authentication 的功能時,會再執行一個 IE。由於這招會開啟不同的 process,asp.net 會因找不到 authenticated cookie 而再度開啟 login page,以完成新的驗證。

因此,可以在同一個開發機器,完成多使用者測試。

IE 8 呢?在 process 的管理上做了相當程度的改變。
首先,開新的 tab ,window, 甚至新的 iexplore.exe ,對使用者來說幾乎是一模一樣的行為。以往的process 管理方法,不但導致了不一樣的結果,也可能因為別的網站有問題,導致同一個Process 的window 全部掛掉,更弄不清楚是哪個網站有問題。因此,IE8 在設計機將這些動作視為相同,因為其目的都是在「瀏覽」。

再來,連到不同的網站,會開啟不同的 process。以不同的tab, window, 瀏覽相同的網站時,會使用相同的 process。這可以使用工作管理員,觀察 PID就可以了解這樣的行為。這樣的行為,稱為 process merge.

因為 process merge 的行為模式,導致上述的測試方法失敗,因為連到了相同的網站,就會使用相同的 process,asp.net 就讀到了相同的 authenticated cookie ,也就會認為是同一個 session 了。

解法呢?就是不要讓 IE 8 進行 process merge.

做法?看下圖便知,加個參數 –nomerge 即可。

image

 

PS: 20090624 微軟有這個連結,其實早就已經設計好這個行為及解法了。真是後知後覺!
新增工作階段

沒有留言:

Share with Facebook