今天發如今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專門用來修復這個問題,各位如遇到一樣的問題,可參考如下說明:cookie
簡單的解決方法是,在網站根目錄,新增一個瀏覽器定義文件(browser definition file)asp.net
步驟以下:ecmascript
1.添加一個"App_Browsers"文件夾網站
2.添加一個"*.browser"後綴的文件,如IE10.browser.spa
3.添加文件內容以下:.net
<browser refID="Default">orm
<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中控件事件回發操做無效問題。