我用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