Ошибка: операция веб-службы .... с параметрами {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 :
Как вы можете видеть, он отлично получает значения, которые я передаю.
В чем я убедился:
Я удостоверился, что указанный выше адрес веб-службы был текущим (то есть я убедился, что это последняя сборка, содержащая мой новый параметр).
Я вручную перехожу к веб-службе, и появляется wsdl ( как и ожидалось).
Я также могу вручную вызвать веб-службу, перейдя по 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. Мысли?