看板 Web_Design 關於我們 聯絡資訊
前面砍掉~~ 我先把Application和Session的差別說明一下! Application:所有人共同使用這個變數 Session :每個人獨立使用這個變數 這樣講可能很不清楚~因為你會想說~ 我用的都是同一個變數名稱呀~怎麼不共同和獨立~ 其實不管Application或Session都會在Server上用id來識別 而不是利用我們的變數名稱來識別喔~ 舉個例應該就會懂了: 假設有二個使用者A、B 網站有Application("counter_App")、Session("counter_Ses") 某一個網頁會同時讀取這二個值,我們再把這二個值的id顯示出來 不同使用者得到的id如下: A:Application("counter_App").ID = #100 Session("counter_Ses").ID = #101 B:Application("counter_App").ID = #100 Session("counter_Ses").ID = #102 上述的說明是在說取得該變數ID時會得到的值,而不是在設定ID,不要誤會囉! 由此可以知道Application在各使用者之間是相同的,Session則是不同的... : 非常感謝,我剛剛查了一下,發現Application 有下面的問題 : Application物件的生命有限,預設超過20分鐘無人連線,或web伺服器重新啟動後, ↑這個是Session ↑這個是Application : Application物件就會被清除。 : 1. 依據上述,儘管已經連上網站,是否只要沒有更改Application("counter1")的動作 : Application("counter1")就會自動清除? 導致取得的Application("counter1") : 為空值? 或是回復至原來的值? Ans:不會,因為Application在啟動後,第一次有人訪問網站時就會存在了! 當網站關閉的時候Application才會消失! : 因為我在使用者進入網站時,Application("counter1")會加1 : 後面則僅讀取Application("counter1")的值, : 如果我把Application 的值儲存到Session("counter1")是否就不會有問題了? : 用Session("counter1")傳遞,session.timeout設定為300 是否可行? Ans:不需要,你想抓的是整個網站的瀏覽人數還是在線人數? 用了Session的話,每個使用者得到的值會不同... : 2. 關於Application("counter1"),我在下面的寫法, : 有可能讓多人取得同一個Application值嗎? Ans:照你下面的寫法,會取得文字檔的值而已,不會跟著變化... : 尤其是在由文字檔中取得數字上,如果A進入網站後,文字檔中取得的數值10 : Application("counter1") 為 11,在A還沒離開網站前, : B進來了,B取得的Application("counter1") 也會是11嗎? 或是12? Ans:B得到的還是11,但因為你後面有用+1,所以最後會變成12... : 在一開始的網頁中,有下面的程式碼 : Application.Lock() : Application("counter1") = Application("counter1") + 1 : Application.UnLock() Ans:這樣的寫法,每次進入網頁就會+1喔...我reload 50次就會+50... : 同時在Global.asax 有下面的設定 : '應用程式開啟時執行的程式碼,由文字檔中取得數字 網站執行後,第一次有人進來會啟動下面的程式 : Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) : Application("counter1") = My.Computer.FileSystem.ReadAllText(FILE_COUNTER) : End Sub 網站關閉時,才會啟動下面的程式 : '應用程式關閉時執行的程式碼 : Sub Application_End(ByVal sender As Object, ByVal e As EventArgs) : If Not Application("counter1") Is Nothing Then : My.Computer.FileSystem.WriteAllText(FILE_COUNTER, _ : Application("counter1"), False) : End If : End Sub 每個使用者的連線會啟動的是Session_OnStart,斷線會啟動的是Session_OnEnd 因為我不知道你的counter想做的是網站的總瀏覽人數還是要做目前線上人數 所以我不敢給你下定論,相關的觀念我提供下面二個網站給你,應該就清楚了 http://www.study-area.org/coobila/tutorial_328.html ↑是用asp為例子,但和asp.net的觀念不變 http://www.slidefinder.net/d/dept_11776/11165964/p19 ↑asp.net的說明,看#362~#364就可以,其他的要看完也沒關係 補充一下: 因為我自己沒有在使用Application所以可能觀念上有錯誤的地方! 如果有其他大大覺得哪有錯的,歡迎指正! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.76.190.21 ※ 編輯: opoepev 來自: 211.76.190.21 (10/21 14:26)