вызов методов на объекте .net из coldfusion - PullRequest
7 голосов
/ 10 июня 2011

Я пытаюсь создать экземпляр и вызвать методы объекта .net, созданного из dll из coldfusion. Это работает, когда я вызываю методы с одним или нулевым аргументом, но не работает с -

System.MissingMethodException: не удалось найти универсальный метод coldfusion2net.test.setvars

когда я пытаюсь вызвать метод с более чем одним аргументом.

Вот мой простой класс 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 я использую Visual Studio 2010 с таргетингом на среду выполнения .net 3.5 (что есть у нас на наших серверах). Я использую ColdFusion 8,0,0,176276 , чтобы попытаться загрузить DLL.

Кто-нибудь еще видел что-нибудь подобное? Я делаю что-то неправильно? Это ошибка CF?

Я просматривал статью о документах Adobe, посвященных ограничениям взаимодействия .NET, но самое близкое, что я обнаружил, - «ColdFusion не может определить правильное преобразование типов данных, если метод имеет несколько подписей, которые имеют одинаковое количество параметров и отличаются только в параметре типы данных ". Здесь, похоже, это не проблема.

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Не уверен, поможет ли это, но ...

обновление версии .NET до 3.5 вызвало проблему, так как Сервис интеграции ColdFusion .NET настроил себя на использование более ранняя версия .NET Framework. Удаление и повторная установка Сервис интеграции ColdFusion .NET исправил проблему в моем случае.

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

0 голосов
/ 28 июня 2011

Просто продолжение здесь. Переход на CF9 исправил это. Я так и не понял, как заставить его работать под 8.

...