解决ASP.NET在IE10中Session丢失问题【转】
今天發(fā)現(xiàn)在IE10中登錄我公司的一個(gè)網(wǎng)站時(shí),點(diǎn)擊其它菜單,頁面總會自動重新退出到登錄頁,后檢查發(fā)現(xiàn),IE10送出的HTTP頭,和.AUTH Cookie都沒問題,但使用表單驗(yàn)證機(jī)制(FormsAuthentication)卻無法判斷該用戶已登入,保存的Session總會丟失.
后查實(shí)這是ASP.NET 2.0,3.5和4.0的Bugs,因這些版本無法識別IE10的User-Agent標(biāo)頭字符串,所以無法識別用戶瀏覽器的版本,從而導(dǎo)至了ASP.NET的特定功能失效,認(rèn)為游覽器不支持Cookies功能,不處理與Cookie相關(guān)的程式碼等,從而在瀏覽器中不保存服務(wù)器返回的Session標(biāo)識,造成丟失等.
這個(gè)問題早經(jīng)微軟官方確認(rèn),是IE10的一個(gè)Bug,也發(fā)布了兩個(gè)HOTFIX專門用來修復(fù)這個(gè)問題,各位如遇到同樣的問題,可參考以下說明:
- 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 [英文]
簡單的解決方法是,在網(wǎng)站根目錄,新增一個(gè)瀏覽器定義文件(browser definition file)
步驟如下:
1.添加一個(gè)"App_Browsers"文件夾
2.添加一個(gè)"*.browser"后綴的文件,如IE10.browser.
3.添加文件內(nèi)容如下:
<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è)定完成,問題即可解決,本方法同時(shí)也適用于處理asp.net中控件事件回發(fā)操作無效問題。
總結(jié)
以上是生活随笔為你收集整理的解决ASP.NET在IE10中Session丢失问题【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孙女能给奶奶说母亲节快乐吗?
- 下一篇: ASP.NET使用log4Net日志组件