[心得] 一段stateServer+session+delegate+callback的故事

看板Web_Design作者 (上班族之朝九晚六?!)時間15年前 (2010/07/09 16:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
使用語言:ASP.NET+VB.NET 前情提要:小弟我之前為了處理一個頭痛的問題(詳見我上兩篇文章), 再加上O2000大大的熱情贊助,讓我一頭栽進了Delegate+Callback的世界。 一開始,在使用Delegate+Callback會需要用到Session去紀錄狀態(判斷程式是否結束), 在O2000大大提供的例子,Session可以正常運作,然而我拿來依樣畫葫蘆, 卻碰到Sys.Webforms.pageRequestManagerServerErrorException,狀態碼:500 (原本的timeoutException已經用重新撰寫來縮短執行時間 ~"~) 當然,身為一位芸芸眾生中的小小工程師,GOOGLE是你最好的導師兼朋友 XD 在經過一陣汪洋大海的搜尋後,一切的一切都指向萬惡的web.config, (web.Config:科科,怪我囉?!) 在web.config當中有個設定叫sessionState, 其中mode可以有好幾種設定值,預設是InProc, 據說為了防止Session突然消失,可以設定成StateServer or SQLServer。 這神奇的問題就發生在,當mode="StateServer"的時候, 依照程式邏輯,在callback執行後,會去跑Page_Load, 神奇的是,在這個時候,Session遺失了,並且發生上述的Exception; 同樣的程式,將mode設定為預設值,也就是InProc, 一切正常,Session健在,程式長存。 (謎:阿彌陀佛~善哉善哉) 在拿了O2000大大可以正常運作程式來實驗之後,更加深了我對這的結果的信任, 發現問題,自然就要找解決的辦法,既然沒辦法從mode上去著手,只能從程式上動刀, 不能用Session來搭配Delegate+callback,總還有其他的候補能用吧, cookie、viewState、hiddenField、以及text file,測試開始。 cookie:失敗!因為在callback的時候不能使用Me.response和Me.request viewState、hiddenfield:失敗!因為跑完callback之後,馬上會去跑Page_Load, 數值通通都會Reset。 text file:成功!在Page_Load的時候,將text file的路徑設定好, 利用Property和ViewStae把數值存下, 這樣一來,不論是Timer Tick事件、BeginInvoke、或是callback的時候, 都能透過Text file的內容去判斷程式是否結束,真是可喜可賀。 ^^/ 詳細程式碼晚點奉上,希望能幫助跟我碰到一樣問題的人。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.71.22
文章代碼(AID): #1CDk71Xb (Web_Design)
文章代碼(AID): #1CDk71Xb (Web_Design)