關於asp.net session機制的疑惑以及猜想

來源:互聯網
上載者:User
   這幾天自己做著玩一個網站,但是遇到了一個關於session的問題。我使用prototype的Ajax對象來訪問頁面擷取參數,這個參數必須要根據當前的會話的唯一id來確認客戶。一般這種需求都會想到SessionId,所以我使用了他。但是我卻驚奇得發現,每次使用ajax去請求的時候,SessionId卻是變化的!
         這下子鬱悶了....這個不會是ajax的問題吧?思前想後,排出了這個可能性。原因:asp.net無法區分http包是來自xmlrequest非同步對象還是瀏覽器的一般請求,asp.net只是得到http包,包的內容並沒有標記它是不是非同步請求。後來自己做了測試也表明使用一般請求get或者post,都會變化sessionid。好了, 可能是我的思路錯了,換個吧。由於我用戶端沒有禁用cookie,所以我想是不是可以從cookie入手。
         asp.net的Session如果在沒有配置為cookieless=true的話,那麼在用戶端會儲存一個sessionid的cookie,
類似於。

但是奇怪的是:我竟然沒有跟蹤到這個cookie,為什麼呢???百思不得其解?記得以前看到的文章都說session標記由用戶端cookie來維護,asp.net在http包頭找到這個cookie後,就能夠在進程內找到相應的資料。
但是我的為什麼就沒有呢?問了幾位朋友,也搖頭。竟然還有人說我ie有問題,或者是rp有問題,哎....期間找問題解決辦法走了不少彎路.....後來,在一次不經意的代碼編寫中,我的每次訪問頁面,都把sessionid存入到session中作為一個索引值,然後馬上取出來返回給用戶端。這次竟然sessionid不變!後來我又實驗發現,只要你對session這個對象進行過操作,甚至是執行Session.Clear()方法,SessionId就不會變!那麼只要在“用戶端同一進程內”的發送的請求都會是一個sessionid!!!此時我才感性的認識到:是不是asp.net的session機制就是如果你沒有對session對象進行操作,訪問的話,那麼請求是不是幹預session相關對象的,還有這樣的好處就是節省了很多伺服器的資源,而不需要每次都與session相關的初始化工作(指的是檢索cookie中的sessionid,然後構建與當前會話相關的Session對象,供後期httpmodule使用。)
      當然,這個也是我自己對asp.net Session機制的一個感性認識,並沒有權威的資料表明,asp.net的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.