Передача переменной в .NET dll в ColdFusion - PullRequest
0 голосов
/ 15 декабря 2018

Я создал очень простой .dll в C # для вызова со страницы ColdFusion.Все работает нормально, если я передаю литеральные значения, но как только я пытаюсь передать переменную (#rollYear#), я получаю сообщение о том, что метод больше не может найти метод.

Страница Coldfusion настраивает мою .dll так:

<cfobject type="dotnet" name="getParcelData" 
        class="soapDLL.GetSecuredParcelByAPN"    
        assembly="{path}\soapdll.dll">

Затем я называю это так:

<cfset output = getParcelData.getData("46546504654","cy","#rollYear#")>

Если я использую код выше, я получаюошибка, "Метод getData не найден." .Если я заменю переменную #rollYear# значением (например, 2017), то все будет работать нормально.В своих тестах я установил переменную #rollYear# с помощью функции CFSET, прежде чем вызывать .dll.

Я бился об этом весь день.У кого-нибудь был подобный опыт?.Dll очень просто.Он просто принимает 3 переменные и в зависимости от этих параметров устанавливает, какую службу SOAP вызывать для получения некоторых данных.По причинам, которые слишком сложны для объяснения, я не могу сделать вызов SOAP из ColdFusion, он должен пройти через .net dll.

Любая помощь будет принята, у меня не так много волос,:)

1 Ответ

0 голосов
/ 15 декабря 2018

Всякий раз, когда вы работаете с компонентами Java или .NET, вам необходимо уделять дополнительное внимание при передаче переменных / значений ColdFusion этим методам.Если типы данных не совпадают точно, вы увидите сообщение об ошибке, сообщающее, что метод не существует или не соответствует сигнатуре метода.

ColdFusion предлагает javaCast() для явногоприведите к необходимому типу данных.Приведите ваши аргументы соответствующим образом, и это должно сработать в большинстве случаев.

Базовый пример:
Метод, который ожидает целое число, выдаст ошибку, когда вы передадите methodThatExpectsInt(123), потому что123 литерал внутренне хранится в виде строки (или Double) ColdFusion.Передав его через methodThatExpectsInt( javaCast("int", 123) ), тип данных будет правильно приведен и приведен в соответствие.

...