天天看點

解決ASP.NET在IE10中Session丢失問題

今天發現在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專門用來修複這個問題,各位如遇到同樣的問題,可參考以下說明:

    簡單的解決方法是,在網站根目錄,新增一個浏覽器定義檔案(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中控件事件回發操作無效問題。

本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/archive/2013/06/08/3126496.html   ,如需轉載請自行聯系原作者

繼續閱讀