真是累啊!為了找到解決方案google了多少篇文章瀏覽了多少個頁面。在前兩天把我的asp.net項目做好,很是高興的把項目進行發布。等發布好放在伺服器上一測試,我驚呆了!!在登入頁面輸入正確的帳號和密碼後進入主表單不到3秒就整個返回登入介面!這是怎麼一回事啊,不可能哦,這個情況肯定是頁面Session為空白才會返回登入介面。
我想不可能啊!於是把源碼在本地測試了一次,沒事啊,每一個頁面的Session都有值啊!就懷疑是發布的時候出錯了,於是再次發布一次。可是還是不行。到底是什麼錯誤啊!由於自己飯項目不再用以前的模版頁來做,是用frame架構來實現的。於是google了一下:IFrame中Session丟失的解決辦法。呵呵,果然一大堆,在看了之後發現了有很多的解決方案。
其中①在session寫入頁面加入:Response.AddHeader("P3P", "CP=CAO PSA OUR");
②IFrame中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");
等等還有很多自己都一一的去試啊試啊!剛開始的時候還信心挺大的,當一次一次測試失敗的時候,那種心情可真叫人煩啊!東西做好了卻不能使用!老天為什麼要那樣子懲罰我呢!在這段時間裡自己脾氣很是暴躁。還想過放棄!!寫後台我沒問題,發布上線以前真是不怎麼深入過,而現在又沒有人可以幫到忙,感覺自己很是無助!!
一直都以為是程式的錯誤,認為IIS的配置已經沒有問題了!呵呵,在這麼一番折磨後,我被逼無奈思維轉向IIS。也是google了n個網頁後突然看到一篇關於介紹:windows2003 + IIS6 + ASP(ASP.NET)的文章了,看了一下,真是有一種柳暗花明又一村的感覺啊!原來是這個程式池的錯誤!IIS6.0啊,哈哈,真是苦死我了!