我安装了ColdFusion 10作为我们的主服务器。我使用会话来存储一些信息,并在应用程序文件中设置了sessiontimeout=#CreateTimeSpan(0,0,45,0)#
,但由于某种原因,会话在45分钟之前超时,大约10分钟。这是有原因的吗?我认为在应用程序文件中设置超时会覆盖ColdFusion管理中设置的任何内容。这不是真的吗?
从文档:"配置和使用会话变量":
您还可以在特定应用程序(从而否决管理员默认设置设置),方法是设置Application.cfc This.sessionTimeout变量或者使用cfapplication标记sessionTimeout属性然而,不能为设置大于最大值的超时值在管理员内存变量页面上设置的会话超时值。
我的强调。
这会是你的问题吗?您没有告诉我们您的CFAdmin设置实际是什么。
我想到了几件事。
你把它倒过来了。CF管理员允许您设置一个特定的最大值,如果应用程序特定的值超过最大值,该值将覆盖应用程序特定值。请参阅此链接:
http://help.adobe.com/en_US/ColdFusion/10.0/Admin/WSc3ff6d0ea77859461172e0811cbf3638e6-7ffc.html#WSc3ff6d0ea77859461172e0811cbf3638e6-7ff4
它引用应用程序变量超时,并且在会话上处于静音状态,但行为应该相同。如果我错了,我相信其他CF的人可以纠正我。
因此,我会检查CF Administrator中的设置(在内存变量下)。如果比赛时间少于45分钟,则比赛的"最长"时间。我相信默认时间是2小时,但如果有人把它设置为,比如10分钟,那么这可能是你的问题。
会话绑定到应用程序本身。如果你正在更改应用程序名称(例如),它会删除所有会话——或者更确切地说,它们仍然存在,但在不可访问的"旧"应用程序名称下。
请记住,重新启动CF将擦除会话。
会话是特定于服务器/内存的。如果您有多个服务器,那么从服务器A切换到服务器B将导致用户丢失会话。有一些策略可以避免这种情况(粘性会话、集群和复制等)。
会话可以通过编程方式删除。如果是这样的话,你可能会知道,但值得注意的是。
这些都是我能想到的。祝你好运
我认为cfset语句中的语法不应该有##,我这样做的方式是:
<cfset this.applicationTimeout= createtimespan(0,0,45,0)>