标签: coldfusion-2016

ColdFusion 2016性能与ColdFusion 9相比

我们正在从ColdFusion 9升级到ColdFusion 2016,我们注意到整体性能下降.我们进行了几次模拟以提供更多洞察力.下面是一个脚本,它提供了性能下降的一个很好的示例.该脚本构建一个查询,然后从查询中创建一个结构.

<!--- Machine info --->
<cfset runtime = createObject("java", "java.lang.System")>
<cfset props = runtime.getProperties()> 
<cfset env = runtime.getenv()> 

<Cfoutput>

coldfusion: #SERVER.ColdFusion.ProductVersion# #SERVER.ColdFusion.ProductLevel#<br>

java.version: #props["java.version"]#<br>
java.vm.name: #props["java.vm.name"]#<br>
os.name: #props["os.name"]#<br>

PROCESSOR_IDENTIFIER: #env["PROCESSOR_IDENTIFIER"]#<br>
PROCESSOR_ARCHITECTURE: #env["PROCESSOR_ARCHITECTURE"]#<br>
NUMBER_OF_PROCESSORS: #env["NUMBER_OF_PROCESSORS"]#<br><Br>
</Cfoutput>

<!--- Create a query --->
<cfset myQuery = QueryNew("Name, Time, Advanced", "VarChar, Time, Bit")> 
<cfset testQuery = QueryNew("ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG,ColumnH,ColumnI,ColumnJ,ColumnK,ColumnL,ColumnM,ColumnN","VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar")>

<!--- Populate the query --->
<Cfloop from=1 to=300 index="x">
    <cfset QueryAddRow(testQuery, 1)> 
    <cfloop index="intLetter" from="#Asc('A')#" to="#Asc('N')#" step="1">
        <cfset temp = QuerySetCell(testQuery, "Column#chr(intLetter)#", "Row #x# column …
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-2016

10
推荐指数
1
解决办法
548
查看次数

当有tsql注释时,cfquery崩溃

这不会在ColdFusion 11中崩溃,但会在ColdFusion 2016中崩溃

SELECT  *
FROM    dbo.Roles WITH (NOLOCK)
WHERE   Code IS NOT NULL
AND     Active = 1
AND     RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这两种方法都可以

SELECT  *
FROM    dbo.Roles WITH (NOLOCK)
WHERE   Code IS NOT NULL
AND     Active = 1
AND     RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) 
Run Code Online (Sandbox Code Playgroud)

是否有恢复原始行为的设置?

UPDATE

我以为我有一个最小的问题例子,但我没有.这是完整的查询

    SELECT '<ul>' + STUFF (
        (
        SELECT  MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var"
        FROM …
Run Code Online (Sandbox Code Playgroud)

t-sql coldfusion cfquery coldfusion-2016

8
推荐指数
1
解决办法
539
查看次数

ColdFusion太大而不是整数

我正在尝试将大量数据转换为兆字节.我不想要小数

numeric function formatMB(required numeric num) output="false" {
    return arguments.num \ 1024 \ 1024;
    } 
Run Code Online (Sandbox Code Playgroud)

然后它抛出一个错误

在此输入图像描述

我该如何解决这个问题?

coldfusion integer-division coldfusion-2016

8
推荐指数
1
解决办法
841
查看次数

ColdFusion 2016:你的网络根目录中有一个名为'api'或'rest'的文件夹吗?

我刚刚安装了ColdFusion 2016(从CF10升级),我注意到每当我尝试访问我的webroot中名为'api'的文件夹时,我都会收到内部500错误.

例如:www.mysite.com/api/

我假设这与新的ColdFusion API REST服务有关,所以我创建了另一个名为'rest'的目录,执行了相同的测试(www.mysite.com/rest/),并收到了另外500个错误.

查看IIS错误截图: 在此输入图像描述

奇怪的是,我没有使用ColdFusion REST服务,我没有在ColdFusion Administrator中启用它.

我的问题:

您是否允许在您的Web根目录中拥有名为"api"或"rest"的文件夹名称?或者这些是现在保留的文件夹名称?是否有解决方法来禁用特定站点的此功能,以便我可以使用这些文件夹名称?

iis coldfusion cfml coldfusion-2016

6
推荐指数
1
解决办法
617
查看次数

关于ColdFusion的CGI范围/结构的未记录的不一致行为

我最初发布这个作为早期关于ColdFusion 2016上的空CGI.REDIRECT_URL的问题的答案.在考虑之后,我认为它更好,因为技术上没有回答OP的问题.相反,我决定把它变成一个单独的问题,尽管它更像是一个评论而不是一个问题.虽然这在技术上可能无法满足最小,完整和可验证的例子的全部要求,而且人们可能会给我带来帮助,但我认为它还是值得的,希望能够更容易找到未来可能遇到此问题的CFers .因此,关于CGI结构/范围的这种特殊行为,防止它们撞到墙上.

话虽如此,CGI结构/范围与其他结构/范围有一些未记录的不一致行为.请注意,我个人对这一发现不予理睬,因为我在阅读Ben Nadel的博客文章时发生过这段时间.所以我在这里发布的所有信息都已在那里详细说明,但我想在这里写一篇很好的总结.

未记录的行为1 - 与其他结构不同,如果CGI结构键不存在,则在引用它时不会引发错误.

OP的原始问题中,他想知道为什么cgi.REDIRECT_URL存在但是空洞.正如他最终发现的那样,它从未真正存在过.作为一个单独的示例,您可以执行此行代码而不会抛出错误.不是你期望的,是吧?

<cfoutout>#cgi.THIS_IS_A_FAKE_KEY#</cfoutout>
Run Code Online (Sandbox Code Playgroud)

那么什么是CFer呢?测试密钥存在.

<cfif structKeyExists( CGI, 'THIS_IS_A_FAKE_KEY' )>
    THIS_IS_A_FAKE_KEY exists
<cfelse>
    THIS_IS_A_FAKE_KEY doesn't exist
</cfif>
Run Code Online (Sandbox Code Playgroud)

未记录的行为2 - 与其他结构不同,如果转储CGI结构,它将不会显示所有键/值对,它只显示一组已定义的键.

OP的情况下,他有一个自定义的Apache CGI变量cgi.REDIRECT_URL,在升级到CF2016之前在他的代码中使用,并且能够直接引用它.但是,我假设他是否抛弃了cgi结构,它不会出现在转储中.在Ben Nadel的案例中,他还有一个自定义cgi变量,称为cgi.document_root从负载均衡器传递并且能够直接引用它,但是在转储cgi内容时他也无法看到密钥.

那么什么是CFer呢?理解这一点并将其存储在您的脑海中,这样当您转储cgi内容并且键/值对不存在时,您将不会被咬.除此之外,其他并不多.

coldfusion coldfusion-9 coldfusion-10 coldfusion-11 coldfusion-2016

5
推荐指数
2
解决办法
219
查看次数

CF接受cf2016中的JSON字符串,但不接受cf9中的JSON字符串

我正在调用API并需要向其发送带有凭据的JSON字符串.我们目前正在从CF9过渡到CF2016.在DEVL中我有两个版本.在测试和产品中我目前只有CF9.最初我编写代码并在CF2016上测试过,它工作正常.当我把它推到测试时,它没有用.我在DEVL中重试CF9,它也有错误.代码是:

<cfset logininfo = {"username": "eistech", "password": "#sat_pw#"}> 
<cfset fromdate=dateformat(DateAdd('d', -1, dat), "yyyy-MM-dd") & 'T00:00:00-0500'>

<!--- Get token info--->
<cfhttp url="https://scoresdownload.collegeboard.org/pascoredwnld/files/list?fromDate=#fromdate#" method="post"  result="finfo">
    <cfhttpparam name="Content-Type" type="HEADER" value="application/json">
    <cfhttpparam name="Accept" type="HEADER" value="application/json">
     <cfhttpparam type="body" value="#serializeJSON(logininfo)#">
</cfhttp>
Run Code Online (Sandbox Code Playgroud)

在CF9中运行时,我得到:

在第5行第20行找到无效的CFML构造.ColdFusion正在查看以下文本: { (Line 20 is <cfset logininfo = {"username": "eistech", "password": "#sat_pw#"}>

我尝试用单引号括起来,但在两个实例中都失败了.如何在CF2016和CF9中使用它?

coldfusion json coldfusion-9 coldfusion-2016

5
推荐指数
1
解决办法
82
查看次数

无法创建与数据库的连接(ColdFusion)

我正在通过ColdFusion创建一个简单的CRUD应用程序.我要去ColdFusion管理员面板http://localhost:8600/CFIDE/administrator/index.cfm,并添加一个"新数据源".但是我收到以下错误:

Connection verification failed for data source: dsnMyVariable
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
The root cause was that: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
Run Code Online (Sandbox Code Playgroud)

DSN SQLNonTransientConnectionException错误

mysql coldfusion coldfusion-2016

5
推荐指数
1
解决办法
3188
查看次数

如何在会话结束时运行查询?

我有查询应该在会话结束时运行.如果有记录与用户帐户绑定,那么我想删除该记录.我使用会话范围来存储用户ID.用户手动注销或会话超时后,应运行此查询.这是一个例子:

public void function onSessionEnd(required struct sessionScope, struct applicationScope={}) {
    local.qryTest = new Query();
    local.qryTest.setDatasource("#arguments.Application.dsnWriteDelete#");
    local.qryTest.setSQL("DELETE Locked WHERE RecID = :RecID");
    local.qryTest.addParam(name="RecID",value="#SESSION.userID#",cfsqltype="cf_sql_integer");
    qryTest.execute();

    return; 
} 
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用J2EE会话.以下是用户手动注销时结束会话的方法:

<cffunction name="LogOut" access="remote" output="yes" returnformat="JSON">
        <cfset local.fnResults = structNew()>

        <cfif structKeyExists(SESSION.AccountInfo, "AccountID")>
            <cftry>
                <cfset local.temp = getPageContext().getSession().invalidate()>
                <cfset local.fnResults = {status : "200"}>

                <cfcatch type="any">
                    <cfset local.fnResults = {status : "400", message : "Error! Please contact your administrator."}>
                </cfcatch>
            </cftry>
        <cfelse>
            <cfset local.fnResults = {status : "400", message : "Error! Please contact your administrator."}> …
Run Code Online (Sandbox Code Playgroud)

coldfusion session session-management coldfusion-2016

5
推荐指数
1
解决办法
98
查看次数

如何有条件地将参数传递给CFC的实例?

我目前正在使用<cfinvoke>标签来调用CFC并传递它们的参数.这非常方便,因为我可以使用标签仅传入我想要的参数:

<cfinvoke component="pathtofolder.imagehandler" method="SomeMethod" argumentcollection="#VARIABLES#" returnvariable="ImageHandlerResult">
<cfif structkeyexists(ARGUMENTS, 'Argument1')>
<cfinvokeargument name="Parameter1" value="#ARGUMENTS.Argument1#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument2')>
<cfinvokeargument name="Parameter2" value="#ARGUMENTS.Argument2#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument3')>
<cfinvokeargument name="Parameter3" value="#ARGUMENTS.Argument3#" />
</cfif>
</cfinvoke>
<cfreturn ImageHandlerResult /> <!--- how do you get this using createObject/new method? --->
Run Code Online (Sandbox Code Playgroud)

如果我使用new()createObject()方法创建CFC的实例,然后在这个新创建的实例中调用方法,我无法有条件地传递参数.我在运行时遇到错误.

<cfset ImageHandler = new pathtofolder.imagehandler()/>
<cfset ImageHandler.SomeMethod(
    <cfif StructKeyExists(ARGUMENTS, 'Argument1')>
    Parameter1 = ARGUMENTS.Argument1
    </cfif>
    <cfif StructKeyExists(ARGUMENTS, 'Argument2')>
    Parameter2 = ARGUMENTS.Argument2
    </cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument3')>
    Parameter3 = ARGUMENTS.Argument3
    </cfif>
)/> …
Run Code Online (Sandbox Code Playgroud)

coldfusion cfc coldfusion-2016

5
推荐指数
1
解决办法
135
查看次数

防止 cfmail 中的 base64 注入攻击

我有一个接受一堆字段的 REST Web 服务。这些字段将进行处理并最终成为电子邮件的一部分。

在此处输入图片说明

当我建立电子邮件时,调用的字段message.image稍后将变为rc.image,它将通过以下方式添加到 HTML 电子邮件中

...
var body &= "<p><img src='#EncodeForHTMLAttribute(rc.image)#' alt='#EncodeForHTMLAttribute(rc.image_name)#'></p>"; 
...
Run Code Online (Sandbox Code Playgroud)

我担心这可能仍然是漏洞

coldfusion base64 cfmail cfml coldfusion-2016

5
推荐指数
0
解决办法
59
查看次数