我用ASP.NET 2.0創建了一個網站,我使用會話變量來確定用戶是否填寫了年齡驗證表單。一切都按預期工作(我可以讀取所有頁面上的會話變量),直到用戶轉到虛擬目錄。當他們這樣做時,頁面無法讀取會話變量。IIS,會話狀態和虛擬目錄
經過大量研究,我到目前爲止完成了以下工作。
- 開啓ASP.NET狀態服務
添加了一個節點的sessionState我的web.config文件中,改變模式爲StateServer(爲網站和虛擬目錄)。
<的sessionState 模式= 「的StateServer」 無Cookie = 「假」 超時= 「20」 stateConnectionString這一= 「TCPIP = 127.0.0.1:42424」 />
生成新的machineKey並加入它無論是網站和虛擬目錄...
<的machineKey
的validationKey = 「... 128 ...」
decryptionKey =」 .. 0.64 ......」 驗證=‘SHA1’ 解密=‘AES’ />創建一個新的應用程序池,並確保這兩個網站和它的虛擬目錄都使用相同的應用程序池。
如果我寫出來的會話ID <%= Session.SessionId%>它是進出虛擬目錄(它是整個網站相同)的網頁一樣。我只是無法獲得該會話變量!有誰知道還有什麼我可以嘗試讓這個工作?
謝謝。
我想過設置一個cookie而不是一個會話變量,因爲它都在同一個域名下,但它似乎應該有一個解決方案。我認爲會話狀態會起作用......爲什麼它對服務器場而言不起作用,而不是虛擬目錄? – Craig 2010-09-29 19:55:59
@Craig - 我從來沒有與服務器農場合作過,但我認爲答案仍然是應用程序(virtural目錄)相同,只是位於不同的服務器上。 – DaveB 2010-09-29 23:45:56