在 ColdFusion 中将变量传递给 .NET dll
Passing variable to .NET dll in ColdFusion
我用 C# 构建了一个非常简单的 .dll 以从简单的 ColdFusion 页面调用。如果我传入文字值,一切正常,但一旦我尝试传入变量 (#rollYear#
),我就会收到一条消息,说明它无法再找到该方法。
coldfusion 页面像这样设置我的 .dll:
<cfobject type="dotnet" name="getParcelData"
class="soapDLL.GetSecuredParcelByAPN"
assembly="{path}\soapdll.dll">
然后我这样称呼它:
<cfset output = getParcelData.getData("46546504654","cy","#rollYear#")>
如果我使用上面的代码,我会得到一个错误,"The getData method was not found."。如果我用一个值(例如 2017)替换 #rollYear#
变量,那么它工作正常。在我的测试中,我在调用 .dll.
之前通过 CFSET
函数设置了 #rollYear#
变量
我整天都在为这个问题苦思冥想。有没有人有过类似的经历? .dll 非常简单。它只需要 3 个变量,并根据这些设置调用什么 SOAP 服务来拉回一些数据。由于太复杂而无法解释的原因,我无法从 ColdFusion 中进行 SOAP 调用,它必须通过 .net dll。
任何帮助将不胜感激,我的头发不多了。 :)
无论何时使用 Java 或 .NET 组件,在将 ColdFusion variables/values 传递给这些方法时都需要格外注意。如果数据类型不完全匹配,您将遇到一条错误消息,告诉您该方法不存在或与方法签名不匹配。
ColdFusion 提供 javaCast()
以显式转换为所需的数据类型。相应地提出你的论点,在大多数情况下它应该会奏效。
基本示例:
当您传递 methodThatExpectsInt(123)
时,需要整数的方法将抛出错误,因为 ColdFusion 在内部将 123
文字存储为字符串(或 Double)。通过 methodThatExpectsInt( javaCast("int", 123) )
传递它,数据类型将被正确转换并匹配。
我用 C# 构建了一个非常简单的 .dll 以从简单的 ColdFusion 页面调用。如果我传入文字值,一切正常,但一旦我尝试传入变量 (#rollYear#
),我就会收到一条消息,说明它无法再找到该方法。
coldfusion 页面像这样设置我的 .dll:
<cfobject type="dotnet" name="getParcelData"
class="soapDLL.GetSecuredParcelByAPN"
assembly="{path}\soapdll.dll">
然后我这样称呼它:
<cfset output = getParcelData.getData("46546504654","cy","#rollYear#")>
如果我使用上面的代码,我会得到一个错误,"The getData method was not found."。如果我用一个值(例如 2017)替换 #rollYear#
变量,那么它工作正常。在我的测试中,我在调用 .dll.
CFSET
函数设置了 #rollYear#
变量
我整天都在为这个问题苦思冥想。有没有人有过类似的经历? .dll 非常简单。它只需要 3 个变量,并根据这些设置调用什么 SOAP 服务来拉回一些数据。由于太复杂而无法解释的原因,我无法从 ColdFusion 中进行 SOAP 调用,它必须通过 .net dll。
任何帮助将不胜感激,我的头发不多了。 :)
无论何时使用 Java 或 .NET 组件,在将 ColdFusion variables/values 传递给这些方法时都需要格外注意。如果数据类型不完全匹配,您将遇到一条错误消息,告诉您该方法不存在或与方法签名不匹配。
ColdFusion 提供 javaCast()
以显式转换为所需的数据类型。相应地提出你的论点,在大多数情况下它应该会奏效。
基本示例:
当您传递 methodThatExpectsInt(123)
时,需要整数的方法将抛出错误,因为 ColdFusion 在内部将 123
文字存储为字符串(或 Double)。通过 methodThatExpectsInt( javaCast("int", 123) )
传递它,数据类型将被正确转换并匹配。