我安装了ColdFusion 10作为我们的主服务器。我正在使用会话来存储一些信息并在应用程序文件中设置sessiontimeout=#CreateTimeSpan(0,0,45,0)#
但由于某种原因,会话在45分钟之前超时 - 大约10分钟。是否有一个原因?我认为应用程序文件中的超时会覆盖ColdFusion管理员中设置的任何内容。这不是真的吗?
答案 0 :(得分:2)
来自文档:“Configuring and using session variables”:
您还可以在a中设置会话变量的超时时间 特定应用程序(从而推翻管理员默认值 通过设置Application.cfc This.sessionTimeout变量来设置) 或者使用cfapplication标签sessionTimeout属性。的然而, 你不能设置超时值超过最大值 在“管理员内存变量”页面上设置的会话超时值。
我的强调。
这可能是你的问题吗?您没有告诉我们您的CFAdmin设置实际是什么。
答案 1 :(得分:2)
有些事情会浮现在脑海中。
你倒退了。如果应用程序特定值超过最大值,CF管理员允许您设置覆盖应用程序特定值的特定最大值。看到这个链接:
它引用应用程序变量超时并且对会话静音但行为应该相同。如果我对此错了,我相信其他CF人可以纠正我。
因此,我会检查CF管理员中的设置(在内存变量下)。如果会话时间小于45分钟,那么会话的“最长”时间将会有效。我认为默认值是2小时,但如果有人将其设置为10分钟,则可能是您的问题。
会话与应用程序本身相关联。如果您要更改应用程序名称(例如),它会清除所有会话 - 或者更确切地说,它们仍然存在,但在“旧”应用程序名称下无法访问。
请记住,重启CF会消灭会话。
会话是特定于服务器/内存的。如果您有多台服务器,则从服务器A切换到服务器B将导致用户丢失其会话。有策略可以避免这种情况(粘性会话,群集和复制等)。
可以通过编程方式删除会话。您可能知道是否是这种情况,但值得注意。
这些都是我能想到的。祝你好运!
答案 2 :(得分:0)
我认为cfset语句中的语法不应该包含##,我这样做是这样的:
<cfset this.applicationTimeout= createtimespan(0,0,45,0)>