ColdFusion 9 вызывает .NET Web Service - операция Web-сервиса с параметрами не может быть найдена. HELP!

Ошибка: операция веб-службы .... с параметрами {part = {...}, storeId = {...}, contractId = {...}} не может быть найдена.

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

Вот что у меня происходит - у меня есть страница ColdFusion, передающая 3 переменных: часть , storeId и contractId .

<cfset vars = structNew()>
<cfset vars["contractId"] = "#Trim(Attributes.contract)#">
<cfset vars["part"] = "#Trim(Attributes.part)#">
<cfset vars["storeId"] = "#Trim(Attributes.store)#">

<cfinvoke webservice = "http://compassnetdev/Services/CustomerContractPartPrice.asmx?wsdl"
          method = "GetCustomerContractPrice"
          returnVariable = "price"
          argumentCollection = "#vars#">
</cfinvoke>

Раньше мне просто передавали contractId и , и это отлично работало . Нет проблем. Но поскольку я добавил в storeId , появляется это сообщение об ошибке:

Error Occurred While Processing Request  
Web service operation GetCustomerContractPrice with parameters {part={BV410070},storeId={001},contractId={21}} cannot be found.  


The error occurred in C:\inetpub\wwwroot\CustomTags\fn_get_price_2.cfm: line 58

56 :          method = "GetCustomerContractPrice"
57 :          returnVariable = "price"
58 :          argumentCollection = "#vars#">
59 : 
60 : 

Как вы можете видеть, он отлично получает значения, которые я передаю.

В чем я убедился:

  1. Я удостоверился, что указанный выше адрес веб-службы был текущим (то есть я убедился, что это последняя сборка, содержащая мой новый параметр).

  2. Я вручную перехожу к веб-службе, и появляется wsdl ( как и ожидалось).

  3. Я также могу вручную вызвать веб-службу, перейдя по URL-адресу веб-службы. Я могу ввести свои 3 переменные и нажать «Вызов», и он вернет правильное значение.

Вот мой код веб-службы:

    public class CustomerContractPartPrice : System.Web.Services.WebService
    {
        [WebMethod]
        public decimal GetCustomerContractPrice(string part, string storeId, int contractId)
        {
            var context = new PricingBLL();
            decimal price = context.GetCustomerContractPartPrice(contractId, part, storeId);
            return price;
        }
    }

Он переходит к бизнес-объекту, выполняет работу и возвращает результат. В конечном итоге я думаю, что это проблема совместимости ColdFusion / .NET. Мысли?

5
задан Mike Marks 6 April 2011 в 13:34
поделиться