在ColdFusion中将变量传递给.NET dll

Mat*_*att 3 .net c# coldfusion coldfusion-8

我在C#中构建了一个非常简单的.dll来从一个简单的ColdFusion页面调用.如果我传入文字值,一切正常,但一旦我尝试并传入一个变量(#rollYear#),我会收到一条消息,说明它无法再找到该方法.

coldfusion页面设置我的.dll像这样:

<cfobject type="dotnet" name="getParcelData" 
        class="soapDLL.GetSecuredParcelByAPN"    
        assembly="{path}\soapdll.dll">
Run Code Online (Sandbox Code Playgroud)

然后我这样称呼它:

<cfset output = getParcelData.getData("46546504654","cy","#rollYear#")>
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的代码我得到一个错误,"找不到getData方法." .如果我#rollYear# 用一个值(例如2017)替换变量,那么它可以正常工作.在我的测试中,我在调用.dll之前#rollYear#通过CFSET函数设置了变量.

我整天都在为此而奋斗.有没有人有类似的经历?.dll非常简单.它只需要3个变量,并根据这些变量设置要调用的SOAP服务以撤回一些数据.由于太复杂而无法解释的原因,我无法从ColdFusion中进行SOAP调用,因此必须通过.net dll.

任何帮助将不胜感激,我没有留下太多的头发.:)

Ale*_*lex 5

无论何时使用Java或.NET组件,在将ColdFusion变量/值传递给这些方法时都需要特别注意.如果数据类型不完全匹配,您将遇到一条错误消息,告诉您该方法不存在或与方法签名不匹配.

ColdFusion提供javaCast()显式转换为所需的数据类型.相应地抛出你的参数,它应该在大多数情况下都可以解决.

基本示例:
需要整数的方法在传递时会抛出错误methodThatExpectsInt(123),因为123文字在内部存储为ColdFusion的字符串(或Double).通过传递methodThatExpectsInt( javaCast("int", 123) ),数据类型将被正确地转换并匹配.