7

我正在尝试实例化和调用从coldfusion 的dll 创建的.net 对象上的方法。当我使用一个或零个参数调用方法但失败时,这有效 -

System.MissingMethodException:找不到通用方法coldfusion2net.test.setvars

当我尝试调用具有多个 arg 的方法时。

这是我的简单 C# 类:

namespace coldfusion2net
{
    public class test
    {
        protected string myvar;
        protected string myvar2;
        public void setvars(string v, string v2) {
            myvar = v;
            myvar2 = v2;
        }
        public void setvar(string v) {
            myvar = v;
        }
        public string getvar(){
            return myvar;
        }
    }
}

这是我的 ColdFusion 测试:

<cfset dll = ExpandPath('./coldfusion2net.dll')>
<cfobject type=".NET" name="test" class="coldfusion2net.test" assembly="#dll#">
<cfset test.init()>
<!--- object has been loaded --->
<cfdump var="#test#">
<!--- so far so good --->
<cfset test.setvar("foo")>
<cfset s = test.getvar()>
<cfoutput>#s#</cfoutput>
<!--- wtf??? --->
<cfset test.setvars("foo","bar")>

为了编译 dll,我使用了针对 .net 3.5 运行时的 Visual Studio 2010(这是我们在服务器上拥有的)。我正在使用 ColdFusion 8,0,0,176276 来尝试加载 dll。

有没有其他人见过这样的事情?难道我做错了什么?这是CF错误吗?

我查看了有关 .NET 互操作性限制的 Adob​​e 实时文档的文章,但我发现最接近的是“如果方法具有多个签名且参数数量相同且仅在参数上有所不同,ColdFusion 无法确定正确的数据类型转换数据类型”。这似乎不是这里的问题。

4

2 回答 2

3

Not sure if this helps, but...

upgrading the .NET version to 3.5 caused the problem, since the ColdFusion .NET integration service had configured itself to use the earlier version of the .NET framework. Uninstalling and then reinstalling ColdFusion .NET integration service fixed the problem in my case.

http://forums.adobe.com/thread/25391?tstart=0

于 2011-06-10T19:50:26.530 回答
0

只是在这里跟进。移至 CF9 解决了这个问题。我从来没有弄清楚如何让它在 8 岁以下工作。

于 2011-06-28T15:19:01.453 回答