查看日志,我们得到以下数百个
"Error","jrpp-185","08/21/12","10:05:43","PATH","www.domain.com
Agent:Mozilla/4.0 (compatible; Synapse)
Error: An exception occurred when invoking a event handler method from Application.cfc.
The method name is: onRequest.
他们似乎主要是搜索机器人。 APplication.cfc上我可以看到对该函数的引用位于
之下<cffunction name="onRequest" returnType="void">
<cfargument name="targetPage" type="String" required=true/>
<cfsetting enablecfoutputonly="yes" requesttimeout="20">
<cfparam name="url.refresh" default="0">
<cfset request.strMember = Duplicate(session.strMember)/>
<cfset request.tNow = GetTickCount()>
<cfif url.refresh EQ 0>
<cfset request.iCacheHr = 12/>
<cfelse>
<cfset request.iCacheHr = 0/>
</cfif>
<cflogin>
<cfif IsDefined("session.strMember.sRoles")>
<cfloginuser name="#session.strMember.sFirstName##session.strMember.sLastName#"
password="12345"
roles="#session.strMember.sRoles#"/>
</cfif>
</cflogin>
<cfinclude template="core/incl/SessionLogger.cfm">
<cfinclude template="core/incl/LinkTranslator.cfm">
<cfinclude template="core/incl/udf.cfm">
<cfinclude template="urlcheck.cfm"/>
<cfinclude template="#Arguments.targetPage#">
</cffunction>
从那以后,任何人都可以建议什么是错的以及如何解决它?我对CF很新,这让我拉出了我留下的小头发
答案 0 :(得分:1)
1)您使用两种不同的编码样式
<cfparam name="url.refresh" default="0">
<cfset request.strMember = Duplicate(session.strMember)/>
第一行中无效/保留打开的XML标记,第二行中保留有效(已关闭)的XML标记。 试着坚持一个(最好是最后一个)。
2)您正在使用旧方式检查正在定义的变量
IsDefined("session.strMember.sRoles")
了解更新(更好,更快)
StructKeyExists(session.strMember, "sRoles")
3)您的代码很可能正在调用
<cfloginuser ... >
每个页面请求
4)确保所有包含的路径都是正确的,并且它们本身没有任何错误。
简化您的方法,直到您停止收到错误,然后调查导致错误的原因
答案 1 :(得分:0)
机器人是否击中了不存在的页面?
也许尝试将最后一行更改为:
<cfif fileExists(expandPath(Arguments.targetPage))>
<cfinclude template="#Arguments.targetPage#">
<cfelse>
<cfabort>
</cfif>
答案 2 :(得分:0)
也许您可以检测到它们是否是机器人并为其他服务器提供服务?取决于您希望您的网站具有搜索友好性:
http://www.bennadel.com/blog/1083-ColdFusion-Session-Management-And-Spiders-Bots.htm