Ho creato manualmente un WSDL che ha una sola operazione senza parametri di input e nessun parametro di output.Includere il tipo di schema nel file WSDL
sto ottenendo seguente errore quando provo a creare un client da questo WSDL:
Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Error: Schema with target namespace ' http://www.xmlns.mycompany.com/GAME/service/Associate/1.1/ ' could not be found. XPath to Error Source: //wsdl:definitions[@targetNamespace=' http://www.xmlns.mycompany.com/GAME/service/Associate/1.1/ ']/wsdl:portType[@name='GAMEAssociateIntf'] C:\toolbox\BlueTest\BloodRedTest\BloodRedTest\Service
La types
(da utilizzare nel client) devono essere generati dal XML presente nel WSDL. Penso che aggiungendo Service Reference, lo strumento non riesca a crearlo a causa di qualche errore nell'XML. Il xsd sembra essere il problema.
Quali modifiche devono essere apportate nel WSDL per creare il proxy?
Nota: sto tentando di includere i tipi xml definiti nello stesso WSDL. [Non ho bisogno di un file separato per lo schema defenition]
WSDL
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="GAMEAssociate"
targetNamespace="http://www.xmlns.mycompany.com/GAME/service/Associate/1.1/"
xmlns:tns="http://www.xmlns.mycompany.com/GAME/service/Associate/1.1/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsp="http://www.w3.org/ns/ws-policy"
>
<types>
<xsd:schema>
</xsd:schema>
<xsd:element name="myData">
<xsd:complexType />
</xsd:element>
<xsd:element name="myDataResponse">
<xsd:complexType />
</xsd:element>
</types>
<message name="getAllVicePresidentsRequest">
<part element="tns:myData" name="getAllVicePresidentsRequest"/>
</message>
<message name="getAllVicePresidentsResponse">
<part element="tns:myDataResponse" name="getAllVicePresidentsResponse"/>
</message>
<portType name="GAMEAssociateIntf">
<operation name="getAllVicePresidents">
<input message="tns:getAllVicePresidentsRequest"/>
<output message="tns:getAllVicePresidentsResponse"/>
</operation>
</portType>
<binding name="GAMEAssociateIntfBinding" type="tns:GAMEAssociateIntf">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getAllVicePresidents">
<soap:operation soapAction="http://www.xmlns.mycompany.com/GAME/wsdl/AssociateIntf/1.4/getAllVicePresidentsRequest"
style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="GAMEAssociate">
<port binding="tns:GAMEAssociateIntfBinding" name="GAMEAssociateSOAP">
<soap:address location="http://localhost:8014/associateservice/GAMEAssociate.svc"/>
</port>
</service>
</definitions>
RIFERIMENTI:
- WSDL - no input - best practice
- What does this WCF error mean: "Custom tool warning: Cannot import wsdl:portType"
- Writing a WSDL 1.1 Web Service Contract by Hand
- Writing Contract-First Web Services
- generate wcf server code from wsdl files
- How to get wsdl input and output names to appear
- Inline Schema
- Hand rolled SOAP request
Hai detto che nessun parametro di ingresso e nessun parametro di output. Ma posso vedere che l'operazione sta definendo un input e un parametro di output. – IndoKnight
@Indoknight Questi messaggi sono vuoti. Penso che abbiamo bisogno di questi messaggi come spiegato in http://stackoverflow.com/questions/1108736/wsdl-no-input-best-practice – Lijo
Non ho lavorato su C#, ma WSDL sembra a posto. Ho controllato SOAPUI. – IndoKnight