ASP.NET在IE10中無法判斷用戶已登入及Session丟失問題解決方法
更新時間:2013年02月15日 14:43:37 作者:
IE10中Session丟失問題引起眾多業(yè)內人士的關注,今天發(fā)現在IE10中登錄網站時,使用表單驗證機制(FormsAuthentication)卻無法判斷該用戶已登入,保存的Session總會丟失,本文將介紹解決方法,感興趣的朋友可以參考下,或許對你有所幫助
今天發(fā)現在IE10中登錄我公司的一個網站時,點擊其它菜單,頁面總會自動重新退出到登錄頁,后檢查發(fā)現,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,也發(fā)布了兩個HOTFIX專門用來修復這個問題,各位如遇到同樣的問題,可參考以下說明:
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 [英文]
簡單的解決方法是,在網站根目錄,新增一個瀏覽器定義文件(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 2.0,3.5和4.0的Bugs,因這些版本無法識別IE10的User-Agent標頭字符串,所以無法識別用戶瀏覽器的版本,從而導至了ASP.NET的特定功能失效,認為游覽器不支持Cookies功能,不處理與Cookie相關的程式碼等,從而在瀏覽器中不保存服務器返回的Session標識,造成丟失等.
這個問題早經微軟官方確認,是IE10的一個Bug,也發(fā)布了兩個HOTFIX專門用來修復這個問題,各位如遇到同樣的問題,可參考以下說明:
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 [英文]
簡單的解決方法是,在網站根目錄,新增一個瀏覽器定義文件(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 不用GridView自帶刪除功能,刪除一行數據
數據表一定要有個ID的主鍵值,你的gridview要設定一下DataKeyNames="ID"這個屬性值,接下的事件就好多了,寫個OnRowDeleting事件就可以了。2009-11-11剖析ASP.NET MVC的DependencyResolver組件
這篇文章主要為大家剖析ASP.NET MVC的DependencyResolver組件,感興趣的小伙伴們可以參考一下2016-04-04Entity?Framework?Core基于數據模型創(chuàng)建數據庫
這篇文章介紹了Entity?Framework?Core基于數據模型創(chuàng)建數據庫的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04asp.net頁面master頁面與ascx用戶控件傳值的問題
aspx 頁面,master頁面與ascx用戶控件傳值的問題2010-03-03