工作中的問題解決 -- (win2003 asp.net) Session和帶頁面回傳的方法無法正常使用解決方案

來源:互聯網
上載者:User

標籤:style   c   class   blog   code   java   

公司BP&IT項目組.從上上個月成立開始開發BP&IT軟體.這個月開始測試我悲劇的發現他盡然不支援我電腦上的IE11.半個多月還沒解決

我們先來分析下原因首頁 登陸頁面正常瀏覽 http://hr.bingjun.cc/

登陸後網址呈現 http://hr.bingjun.cc/(F(0-MEj-fnv8v-hWRGI2rOhfQ_0SZjQAnMEBs5P1DKcEhwdX-TTu8TAZ_H6HVGorBM-TaTm4zK_DCSdO8gvqOXWCoou4YJIVziHJ1PC9hke7w1))/Default.aspx

點擊任何網頁任意一個連結 

鍵 值
Referer http://hr.bingjun.cc/MyTask/MyTaskPage.aspx

就302 http://hr.bingjun.cc/

 

對網址http://hr.bingjun.cc/(F(0-MEj-fnv8v-hWRGI2rOhfQ_0SZjQAnMEBs5P1DKcEhwdX-TTu8TAZ_H6HVGorBM-TaTm4zK_DCSdO8gvqOXWCoou4YJIVziHJ1PC9hke7w1))/Default.aspx

分析我們可以發現可以輕易發現.這是一個使用無Cookie模式的網址連結.並且F打頭可以判斷我們的BP&IT項目組使用了Forms表單驗證

而跳轉頁面卻是一個http://hr.bingjun.cc/MyTask/MyTaskPage.aspx不帶無Cookie URL的頁面這樣就導致了Cookie丟失就更別論依靠Cookie工作的 Session 和 登陸狀態了

為什麼頁面跳轉後卻沒有帶上CookieURL了 我想是因為他們的代碼沒有使用 伺服器路徑“~/” 所導致 因為只有使用伺服器路徑ASP.NET才會幫我們自動的吧CookieUrl段給帶上

發現後立即詢問BP&IT項目組為什麼我的IE11無法使用內部網站(回答我是微軟的BUG)

盡然是這樣那根據我所掌握的知識能導致此問題的BUG 應該是ASP.NET把 IE11識別為無Cookie 瀏覽器了

那這樣的話解決辦法就很多 首先從伺服器層級講起

我們知道ASP.NET識別瀏覽器是不是無Cookie的是通過本身的一個庫來識別的那我們也可以往這個庫裡加點東西

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers

開啟此目錄可以發現下面後很多檔案沒錯這就是ASP.NET用來識別瀏覽器的庫了開啟ie.browser

添加一個 browser 配置節點

 

<browser id="IE11" parentID="Mozilla">        <identification>          <userAgent match="Trident\/7.0; rv:(?‘version‘(?‘major‘\d+)(\.(?‘minor‘\d+)?)(?‘letters‘\w*))(?‘extra‘[^)]*)" />          <userAgent nonMatch="IEMobile" />        </identification>        <capture>        <userAgent match="Trident/(?‘layoutVersion‘\d+)" />       </capture>       <capabilities>         <capability name="browser"              value="IE" />         <capability name="layoutEngine"         value="Trident" />         <capability name="layoutEngineVersion"  value="${layoutVersion}" />         <capability name="extra"                value="${extra}" />         <capability name="isColor"              value="true" />         <capability name="letters"              value="${letters}" />         <capability name="majorversion"         value="${major}" />         <capability name="minorversion"         value="${minor}" />         <capability name="screenBitDepth"       value="8" />         <capability name="type"                 value="IE${major}" />         <capability name="version"              value="${version}" />       </capabilities>     </browser>

這樣該伺服器上v4.0.30319版本下的所有網站此問題都算是解決了

 

2 BP&IT的還說過他們找到過在伺服器上改設定檔的解決方案他們不敢用 伺服器上網站太多怕崩潰 哎~~不知道怎麼說他們

不知道ASP.NET Config設定檔 網站的都可以追加或覆蓋全域的嗎?(PS:在上面那個路徑的Config下的都是全域配置)

既然是可以覆蓋那在項目裡建立個瀏覽器檔案不就OK了 至於怎麼建立瀏覽器檔案這個應該不用我說了吧(部落格園的圖片盡然要外鏈要不我加幾個步驟進來了)

3 如果這也閑麻煩或者怕以後還會有類似的不識別的瀏覽器那就修改cookieless的值吧

開啟web.config 添加或修改System.web下的節點

<sessionState mode="InProc" cookieless="UseUri" customProvider="DefaultSessionProvider">      <providers>        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />      </providers>    </sessionState>    <authentication mode="Forms">      <forms cookieless="UseUri" loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" />    </authentication>

配置 cookieless="UseCookies" 這也所有的瀏覽器不管瀏覽器支不支援Cookie 都使用瀏覽器Cookie 而不是URLCookie(話說你們見過不支援Cookie的瀏覽器嗎?PS:我麼見過)

到這兒我想也差不多了吧

PS:IE11出現 ——_doPostBack未定義 也是瀏覽器不識別的問題哦 不過不是以為瀏覽器不識別Cookie而是以為他不支援Javascript通過最開始的2個方法一樣的解決上的重點是在配置中加入如下2句

<capability name="javascript"           value="true" />  <capability name="cookies"              value="true" />

(PS:你們見過不支援Javascript的瀏覽器嗎?我沒見過..這微軟..搞毛!預設成都支援多好不支援才寫設定檔不很好嘛)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.