Ошибка: операция веб-службы .... с параметрами {part = {...}, storeId = {...}, contractId = {...}} не найдена.
Я создал веб-сервис .NET, который общается со страницей ColdFusion.Что происходит, когда пользователь вводит номер детали в поле номера детали, а затем вкладывает его, веб-служба вызывается для получения соответствующей цены для этой детали.Как это получается, цены устанавливаются за кулисами, не имеют значения и слишком сложны, чтобы показывать их здесь, ради того, что я пытаюсь объяснить.
Вот что я получил - ячтобы страница ColdFusion передавала 3 переменные: part , 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 и part были переданы, и это сработало замечательно.Нет проблем.Но так как я добавил в 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 переменные и нажать Invoke, и он вернёт правильное значение.
Вот мой код веб-службы:
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.Мысли?