ASP.NET在IE10中無法判斷用戶已登入及Session丟失問題解決方法
更新時(shí)間:2013年02月15日 14:43:37 作者:
IE10中Session丟失問題引起眾多業(yè)內(nèi)人士的關(guān)注,今天發(fā)現(xiàn)在IE10中登錄網(wǎng)站時(shí),使用表單驗(yàn)證機(jī)制(FormsAuthentication)卻無法判斷該用戶已登入,保存的Session總會(huì)丟失,本文將介紹解決方法,感興趣的朋友可以參考下,或許對(duì)你有所幫助
今天發(fā)現(xiàn)在IE10中登錄我公司的一個(gè)網(wǎng)站時(shí),點(diǎn)擊其它菜單,頁(yè)面總會(huì)自動(dòng)重新退出到登錄頁(yè),后檢查發(fā)現(xiàn),IE10送出的HTTP頭,和.AUTH Cookie都沒問題,但使用表單驗(yàn)證機(jī)制(FormsAuthentication)卻無法判斷該用戶已登入,保存的Session總會(huì)丟失.
后查實(shí)這是ASP.NET 2.0,3.5和4.0的Bugs,因這些版本無法識(shí)別IE10的User-Agent標(biāo)頭字符串,所以無法識(shí)別用戶瀏覽器的版本,從而導(dǎo)至了ASP.NET的特定功能失效,認(rèn)為游覽器不支持Cookies功能,不處理與Cookie相關(guān)的程式碼等,從而在瀏覽器中不保存服務(wù)器返回的Session標(biāo)識(shí),造成丟失等.
這個(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 [英文]
簡(jiǎn)單的解決方法是,在網(wǎng)站根目錄,新增一個(gè)瀏覽器定義文件(browser definition file)
步驟如下:
1.添加一個(gè)"App_Browsers"文件夾
2.添加一個(gè)"*.browser"后綴的文件,如IE10.browser.
3.添加文件內(nèi)容如下:
<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>
設(shè)定完成,問題即可解決
后查實(shí)這是ASP.NET 2.0,3.5和4.0的Bugs,因這些版本無法識(shí)別IE10的User-Agent標(biāo)頭字符串,所以無法識(shí)別用戶瀏覽器的版本,從而導(dǎo)至了ASP.NET的特定功能失效,認(rèn)為游覽器不支持Cookies功能,不處理與Cookie相關(guān)的程式碼等,從而在瀏覽器中不保存服務(wù)器返回的Session標(biāo)識(shí),造成丟失等.
這個(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 [英文]
簡(jiǎn)單的解決方法是,在網(wǎng)站根目錄,新增一個(gè)瀏覽器定義文件(browser definition file)
步驟如下:
1.添加一個(gè)"App_Browsers"文件夾
2.添加一個(gè)"*.browser"后綴的文件,如IE10.browser.
3.添加文件內(nèi)容如下:
復(fù)制代碼 代碼如下:
<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>
設(shè)定完成,問題即可解決
您可能感興趣的文章:
- C# SESSION丟失問題的解決辦法
- Yii框架用戶登錄session丟失問題解決方法
- php頁(yè)面跳轉(zhuǎn)session cookie丟失導(dǎo)致不能登錄等問題的解決方法
- 解決uploadify使用時(shí)session發(fā)生丟失問題的方法
- Session 失效的原因匯總及解決丟失辦法
- Windows下Apache + PHP SESSION丟失的解決過程全紀(jì)錄
- Session丟失的解決辦法小結(jié)
- iis7中session丟失的解決方法小結(jié)
- uploadify在Firefox下丟失session問題的解決方法
- 解決window.location.href之后session丟失的問題
相關(guān)文章
asp.net 不用GridView自帶刪除功能,刪除一行數(shù)據(jù)
數(shù)據(jù)表一定要有個(gè)ID的主鍵值,你的gridview要設(shè)定一下DataKeyNames="ID"這個(gè)屬性值,接下的事件就好多了,寫個(gè)OnRowDeleting事件就可以了。2009-11-11剖析ASP.NET MVC的DependencyResolver組件
這篇文章主要為大家剖析ASP.NET MVC的DependencyResolver組件,感興趣的小伙伴們可以參考一下2016-04-04ASP.NET通過第三方網(wǎng)站Bitly實(shí)現(xiàn)短鏈接地址程序
這篇文章主要介紹了ASP.NET通過第三方網(wǎng)站Bitly實(shí)現(xiàn)短鏈接地址程序的步驟,需要的朋友可以參考下。2016-06-06Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)
這篇文章介紹了Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04asp.net頁(yè)面master頁(yè)面與ascx用戶控件傳值的問題
aspx 頁(yè)面,master頁(yè)面與ascx用戶控件傳值的問題2010-03-03.NET Core Web APi大文件分片上傳研究實(shí)現(xiàn)
這篇文章主要介紹了.NET Core Web APi大文件分片上傳研究實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11