今天發(fā)現(xiàn)在IE10中登錄我公司的一個(gè)網(wǎng)站時(shí),點(diǎn)擊其它菜單,頁(yè)面總會(huì)自動(dòng)重新退出到登錄頁(yè),后檢查發(fā)現(xiàn),IE10送出的HTTP頭,和.AUTH Cookie都沒(méi)問(wèn)題,但使用表單驗(yàn)證機(jī)制(FormsAuthentication)卻無(wú)法判斷該用戶已登入,保存的Session總會(huì)丟失.
后查實(shí)這是ASP.NET 2.0,3.5和4.0的Bugs,因這些版本無(wú)法識(shí)別IE10的User-Agent標(biāo)頭字符串,所以無(wú)法識(shí)別用戶瀏覽器的版本,從而導(dǎo)至了ASP.NET的特定功能失效,認(rèn)為游覽器不支持Cookies功能,不處理與Cookie相關(guān)的程式碼等,從而在瀏覽器中不保存服務(wù)器返回的Session標(biāo)識(shí),造成丟失等.
這個(gè)問(wèn)題早經(jīng)微軟官方確認(rèn),是IE10的一個(gè)Bug,也發(fā)布了兩個(gè)HOTFIX專門用來(lái)修復(fù)這個(gè)問(wèn)題,各位如遇到同樣的問(wèn)題,可參考以下說(shuō)明:
KB2600088: Hotfix 適用在 Microsoft.NET Framework 4.0 中的 ASP.NET [英文]
KB2608565: Hotfix 適用在 .NET Framework 3.5.1 中的 ASP.NET [英文]
KB2600100: Hotfix 適用在 .NET Framework 3.5 SP1 與 .NET Framework 2.0 SP2 中的 ASP.NET [英文]
簡(jiǎn)單的解決方法是,在網(wǎng)站根目錄,新增一個(gè)瀏覽器定義文件(browser definition file)
步驟如下:
1.添加一個(gè)"App_Browsers"文件夾
2.添加一個(gè)"*.browser"后綴的文件,如IE10.browser.
3.添加文件內(nèi)容如下:
復(fù)制代碼代碼如下:
<browsers>
<browser refID="Default">
<capabilities><!-- To avoid wrong detections of e.g. IE10 -->
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>
設(shè)定完成,問(wèn)題即可解決