在某些瀏覽器下,如獵豹瀏覽器、QQ瀏覽器、3245瀏覽器的兼容模式下
兩個頁面,在a.aspx頁面里設定了Session,跳轉到b.aspx頁面中,Session失效,這是怎么回事?
a.aspx檔案中,有個鏈接:<a href="https://bbs.csdn.net/topics/b.aspx">B頁面</a>
a.aspx.cs檔案中,使用以下陳述句設定Session:
Session["aaa"] = "abc"
b.aspx.cs檔案中,讀取Session["aaa"] ,值為null。
--------------------------------------------------------
追蹤Session.SessionID,發現在a.aspx和b.aspx中的值不同。
--------------------------------------------------------
發現問題程序:
1、代碼應該是沒有問題,因為這兩個頁面部署在服務器上,有一年多了,一直沒出現問題。
2、服務器作業系統為Windows Server 2016,去年12月,update之后,有客戶反應,從a.aspx頁面跳轉到b.aspx之后,session丟失。
3、經測驗,使用IE、Edge、Chrome等瀏覽器訪問都正常,只有獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式下,Session丟失,極速模式訪問正常。
4、在本機開發環境中測驗,包括獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式,訪問完全正常。初步懷疑是服務器update之后,IIS受影響。
5、為了找出IIS究竟受哪個更新檔案影響,使用虛擬機安裝了一個純凈的Windows Server 2016。
6、安裝完作業系統后,直接把網站部署在虛擬機里,測驗發現,包括獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式,訪問完全正常。
7、update虛擬機中的Windows Server 2016,再測驗發現,獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式下,Session丟失。
8、虛擬機中update了三個更新:KB4537764、KB4520724、KB3199986。
9、卸載KB4537764,測驗發現,包括獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式,訪問完全正常。
10、在服務器上卸載KB4537764,再測驗,獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式下,Session還是丟失。
11、在服務器上將所有去年12月以后安裝的更新全部卸載(除了KB4520724無法卸載外),再測驗,獵豹瀏覽器兼容模式、QQ瀏覽器兼容模式下,Session還是丟失。
請問,問題究竟出在哪里了?
uj5u.com熱心網友回復:
肯定還是補丁更新的問題吧,只是打上后再卸載可能存在不干凈的問題uj5u.com熱心網友回復:
你上述的操作,確認沒有調整過別的服務或配置嗎?uj5u.com熱心網友回復:
確認,而且在虛擬機中可以還原操作,一定是update之后的問題。
不過后來修改程式來避免Session丟失的現象了
uj5u.com熱心網友回復:
sessid默認是放在cookie中,打開瀏覽器的除錯器看看,sessionid是如何變化的。uj5u.com熱心網友回復:
Session丟失了,查不到SessionId。
最后的解決辦法是:
因為asp.net的Session存放的Cookie名是“ASP.NET_SessionId”,手動寫入一個名為“ASP.NET_SessionId”的Cookie,完美解決。
uj5u.com熱心網友回復:
問題會不會是因為做了偽靜態?轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/15334.html
標籤:IIS
