首頁 >後端開發 >C#.Net教程 >ASP.NET在IE10中無法判斷使用者已登入及Session遺失問題解決方法

ASP.NET在IE10中無法判斷使用者已登入及Session遺失問題解決方法

高洛峰
高洛峰原創
2017-01-07 09:54:361374瀏覽

今天發現在IE10中登入我公司的一個網站時,點擊其它選單,頁面總會自動重新退出到登入頁,後檢查發現,IE10送出的HTTP頭,和.AUTH Cookie都沒問題,但使用表單驗證機制(FormsAuthentication)卻無法判斷該使用者已登入,儲存的Session總是會遺失.

後查實這是ASP.NET 2.0,3.5和4.0的Bugs,因這些版本無法辨識IE10的User-Agent標頭,所以無法辨識使用者瀏覽器的版本,從而導至了ASP.NET的特定功能失效,認為遊覽器不支援Cookies功能,不處理與Cookie相關的程式碼等,從而在瀏覽器中不保存伺服器傳回的Session標識,造成丟失等.

這個問題早經微軟官方確認,是IE10的一個Bug,也發布了兩個HOTFIX專門用來修復這個問題,各位如遇到同樣的問題,可參考以下說明: 
KB2600088: Hotfix 適用於Microsoft.NET Framework 4.0 中的ASP.NET  [英文] 
KB2608565: Hotfix 適用於.NET Framework 3.5.1 中的ASP.NET Hotfix 適用於.NET Framework 3.5.1 中的ASP.NET Hotfix) 5 SP1 與.NET Framework 2.0 SP2 中的ASP.NET  [英文]
簡單的解決方法是,在網站根目錄,新增一個瀏覽器定義檔(browser definition file) 

步驟如下: 
1.新增一個"App_Browsers"資料夾 
2.新增一個"*.browser"字尾的檔案,如IE10.browser. 
3.新增檔案內容如下: 

<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>


更多ASP.NET判斷在IE10中無法使用者已登入使用者已登入遺失問題解決方法相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn