在 Windows2003/IIS6 上运行 ColdFusion 8.01 Standard
应用程序.cfc:
<cfcomponent output="false">
<cfscript>
THIS.SessionManagement = "Yes";
THIS.SessionTimeout = CreateTimeSpan(0, 3, 0, 0);
THIS.ApplicationTimeout = CreateTimeSpan(0, 8, 0, 0);
</cfscript>
<cffunction name="onRequestStart" returnType="Boolean" output="false">
<cfargument name="targetPage" type="string" required="true">
<cfscript>
if (!StructKeyExists(SESSION, "User"))
SESSION.User = CreateObject("component", "cfc.User");
</cfscript>
</cffunction>
</cfcomponent>
模板文件伪代码示例:
LOCAL.qItems =
CreateObject(
"component",
"cfc.Items"
).setUser(SESSION.User).getItems();
for (i=1; i<=LOCAL.qItems.RECORDCOUNT; i++) {
LOCAL.Item =
CreateObject(
"component",
"cfc.Item"
).setUser(
SESSION.User
).setId(LOCAL.qItems["Sku"][i]);
}
SESSION.User 设置(如果尚未定义)onRequestStart()
of Application.cfc
。上面的代码在模板文件中运行。第二个参考SESSION.User
消息抛出异常Element USER is undefined in SESSION
.
为什么要在几行之前定义 SESSION.User (不抛出异常),然后在几行之后(几毫秒内)抛出此异常?
在我的应用程序的不同模板中,这种情况可能每天都会发生一次。
我怎样才能防止这种情况发生?