Fehler: Web Service Operation .... mit den Parametern {part={...},storeId={...},contractId={...}} kann nicht gefunden werden.
Ich habe einen .NET-Webdienst erstellt, der mit einer ColdFusion-Seite kommuniziert. Wenn der Benutzer eine Teilenummer in das Feld für die Teilenummer eingibt und dann die Tabulatortaste drückt, wird der Webdienst aufgerufen, um den entsprechenden Preis für dieses Teil zu ermitteln. Wie der Preis ermittelt wird, geschieht hinter den Kulissen, ist irrelevant und zu kompliziert, um es hier darzustellen, um den Punkt zu verdeutlichen, den ich zu vermitteln versuche.
Hier ist, was ich habe auf- Ich habe die ColdFusion-Seite in 3 Variablen übergeben: Teil , storeId und 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>
Vorher hatte ich nur die contractId und die Teil und es hat wunderbar funktioniert. Keine Probleme. Aber seit ich die storeId wird diese Fehlermeldung angezeigt:
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 :
Wie Sie sehen können, werden die Werte, die ich übergebe, einwandfrei empfangen.
Dafür habe ich gesorgt:
-
Ich habe mich vergewissert, dass die oben angegebene Webdienstadresse aktuell ist (d. h. ich habe sichergestellt, dass es sich um den neuesten Build handelt, der meinen neuen Parameter enthält).
-
Ich rufe den Webdienst manuell auf, und die wsdl wird (wie erwartet) angezeigt.
-
Ich kann den Webdienst auch manuell aufrufen, indem ich die URL des Webdienstes aufrufe. Ich kann meine 3 Variablen eingeben und auf "Aufrufen" klicken, und es wird der richtige Wert zurückgegeben.
Hier ist mein Webservice-Code:
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;
}
}
Diese geht an das Geschäftsobjekt, erledigt die Arbeit und gibt das Ergebnis zurück. Letztendlich denke ich, dass dies ein Problem der Interoperabilität zwischen ColdFusion und .NET ist. Was denken Sie?