G
Glenn Venzke
I'm using a ColdFusion app to consume a .NET webservice with 3 methods and
I'm running into a problem. The first time I added a web reference & compiled
the service (with VS.NET standard edition 2003), I had only 2 methods - both
of which worked fine when calling from the CF client. But then I added a
third method, updated the web reference and rebuilt the solution. Although I
could invoke all three methods directly from the web browser, when I tried to
invoke the 3rd method in CF, it wasn't recognizing the new method. I
examined the source code in the updated wsdl, disco and "Reference.vb" files
and they all make proper references to all three methods. It seems like the
compiler is not recognizing updates made to the WSDL file and the proxy
classes are not being recompiled for some reason. I'm wondering if this is
due to a malformed WSDL document or the syntax in the WSDL is not following a
standard that ColdFusion can parse. I'm enclosing a copy of the WSDL code for
reference. Frankly, I'm stumped by this. Any ideas?
WSDL Content:
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://www.mynamespace.com/WebService1/TestService"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://www.mynamespace.com/WebService1/TestService"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://www.mynamespace.com/WebService1/TestService">
<s:element name="CompanyName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CompanyNameResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyAddress">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyAddressResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyAddressResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyContact">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyContactResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyContactResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyCreateDate">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyCreateDateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyCreateDateResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
<message name="CompanyNameSoapIn">
<part name="parameters" element="s0:CompanyName" />
</message>
<message name="CompanyNameSoapOut">
<part name="parameters" element="s0:CompanyNameResponse" />
</message>
<message name="CompanyAddressSoapIn">
<part name="parameters" element="s0:CompanyAddress" />
</message>
<message name="CompanyAddressSoapOut">
<part name="parameters" element="s0:CompanyAddressResponse" />
</message>
<message name="CompanyContactSoapIn">
<part name="parameters" element="s0:CompanyContact" />
</message>
<message name="CompanyContactSoapOut">
<part name="parameters" element="s0:CompanyContactResponse" />
</message>
<message name="CompanyCreateDateSoapIn">
<part name="parameters" element="s0:CompanyCreateDate" />
</message>
<message name="CompanyCreateDateSoapOut">
<part name="parameters" element="s0:CompanyCreateDateResponse" />
</message>
<portType name="TestServiceSoap">
<operation name="CompanyName">
<input message="s0:CompanyNameSoapIn" />
<output message="s0:CompanyNameSoapOut" />
</operation>
<operation name="CompanyAddress">
<input message="s0:CompanyAddressSoapIn" />
<output message="s0:CompanyAddressSoapOut" />
</operation>
<operation name="CompanyContact">
<input message="s0:CompanyContactSoapIn" />
<output message="s0:CompanyContactSoapOut" />
</operation>
<operation name="CompanyCreateDate">
<input message="s0:CompanyCreateDateSoapIn" />
<output message="s0:CompanyCreateDateSoapOut" />
</operation>
</portType>
<binding name="TestServiceSoap" type="s0:TestServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="CompanyName">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyName"
style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyAddress">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyAddress" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyContact">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyContact" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyCreateDate">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyCreateDate" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="TestService">
<port name="TestServiceSoap" binding="s0:TestServiceSoap">
<soap:address location="http://localhost/CFWS/CompanyInfo.asmx" />
</port>
</service>
</definitions>
I'm running into a problem. The first time I added a web reference & compiled
the service (with VS.NET standard edition 2003), I had only 2 methods - both
of which worked fine when calling from the CF client. But then I added a
third method, updated the web reference and rebuilt the solution. Although I
could invoke all three methods directly from the web browser, when I tried to
invoke the 3rd method in CF, it wasn't recognizing the new method. I
examined the source code in the updated wsdl, disco and "Reference.vb" files
and they all make proper references to all three methods. It seems like the
compiler is not recognizing updates made to the WSDL file and the proxy
classes are not being recompiled for some reason. I'm wondering if this is
due to a malformed WSDL document or the syntax in the WSDL is not following a
standard that ColdFusion can parse. I'm enclosing a copy of the WSDL code for
reference. Frankly, I'm stumped by this. Any ideas?
WSDL Content:
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://www.mynamespace.com/WebService1/TestService"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://www.mynamespace.com/WebService1/TestService"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://www.mynamespace.com/WebService1/TestService">
<s:element name="CompanyName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CompanyNameResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyAddress">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyAddressResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyAddressResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyContact">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyContactResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyContactResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyCreateDate">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="strDealerNbr"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CompanyCreateDateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CompanyCreateDateResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
<message name="CompanyNameSoapIn">
<part name="parameters" element="s0:CompanyName" />
</message>
<message name="CompanyNameSoapOut">
<part name="parameters" element="s0:CompanyNameResponse" />
</message>
<message name="CompanyAddressSoapIn">
<part name="parameters" element="s0:CompanyAddress" />
</message>
<message name="CompanyAddressSoapOut">
<part name="parameters" element="s0:CompanyAddressResponse" />
</message>
<message name="CompanyContactSoapIn">
<part name="parameters" element="s0:CompanyContact" />
</message>
<message name="CompanyContactSoapOut">
<part name="parameters" element="s0:CompanyContactResponse" />
</message>
<message name="CompanyCreateDateSoapIn">
<part name="parameters" element="s0:CompanyCreateDate" />
</message>
<message name="CompanyCreateDateSoapOut">
<part name="parameters" element="s0:CompanyCreateDateResponse" />
</message>
<portType name="TestServiceSoap">
<operation name="CompanyName">
<input message="s0:CompanyNameSoapIn" />
<output message="s0:CompanyNameSoapOut" />
</operation>
<operation name="CompanyAddress">
<input message="s0:CompanyAddressSoapIn" />
<output message="s0:CompanyAddressSoapOut" />
</operation>
<operation name="CompanyContact">
<input message="s0:CompanyContactSoapIn" />
<output message="s0:CompanyContactSoapOut" />
</operation>
<operation name="CompanyCreateDate">
<input message="s0:CompanyCreateDateSoapIn" />
<output message="s0:CompanyCreateDateSoapOut" />
</operation>
</portType>
<binding name="TestServiceSoap" type="s0:TestServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="CompanyName">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyName"
style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyAddress">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyAddress" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyContact">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyContact" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="CompanyCreateDate">
<soapperation
soapAction="http://www.mynamespace.com/WebService1/TestService/CompanyCreateDate" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="TestService">
<port name="TestServiceSoap" binding="s0:TestServiceSoap">
<soap:address location="http://localhost/CFWS/CompanyInfo.asmx" />
</port>
</service>
</definitions>