Asp.net的Session到期

來源:互聯網
上載者:User

如果你發現session突然無理由的丟失,而當你認真的檢查代碼並且排除其它常規可能丟失的可能性時,你可能會像我一樣,幾乎要接近崩潰~!

    後來發現問題出在我用代碼建立一個臨時目錄然後刪除臨時目錄的刪除操作上。

    現在和大家分享下:希望對碰到類似釘子的朋友有用……

    說白了session丟失實質就是:應用程式重起!

    應用程式什麼時候自動重起呢?

    請參考:Anand在dotnetindia.com發表的文章

    也就是說 asp.net 會監視應用程式目錄,一但有被監視的動作發生(比如:修改了config、重新命名目錄等)應用程式就會自動重起當然這時你的session一定丟失了。

    如果避免不了這種操作(如:重新命名目錄);這裡我們可以用cookie存資訊或存到資料庫去;

    注意:除了以上列出的英文條件外。目錄的刪除操作一定丟失session.asp.net的內部機制對待目錄有點像個守財奴,它死守著目錄,你建立它不會管(往裡加),一但建立他就會監視該目錄,若你要刪除或重新命名它的(動它的目錄),它就發生重起了…… 

    2.Frame中關於Session丟失

    在開發中,我們經常會遇到使用Frame來工作,而且有時是為了跟其他網站集合成,應用到多域的情況下,而Iframe是不能儲存Session的。因此,網上可以找到很多相關的文章,如果網站可以採用設定Web.Config中的配置:<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="40" />把cookieless="false"改成"true"就可以了。但也同樣有個小問題,就是如果頁面中採用Javascript的window.location.href=''這樣的方式來重新導向的話,系統會認為這是另一個新的請求,產生一個新的SessionId,導致原Session同樣的丟失。所以對於重新導向,還是使用Response.Redirect()為好。

    除了Ifrmae有丟Session問題外,frameset也有同樣的問題。Frameset的問題更不移定,是有時會丟,有時不會丟,這更認人頭痛,在網上找到了一個方法,在頁面page_onload裡添加一語句:Response.AddHeader("P3P","CP=CAO PSA OUR");FrameSet中的Session丟失問題就解決了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.