2010-09-23 22 views
0

Un client nous a fourni des schémas et un wsdl pour un service qu'ils aimeraient développer. Quand j'ai sauté sur le projet, il y avait déjà une implémentation de service en place. Lorsque je récupère le fichier svc dans IE, il affiche la commande svcutil normale, etc. Quand je regarde les schémas importés par le wsdl que nous utilisons, je remarque que les MessageContracts n'apparaissent pas dans le fichier. schéma. Que puis-je faire pour que les MessageContracts apparaissent pour que les schémas soient idetentiques?Comment puis-je faire apparaître mon contrat de message WCF dans le schéma importé?

Par exemple, le client nous a donné cela,

<xs:schema elementFormDefault="qualified" targetNamespace="http://ws.tcore.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.tcore.com"> 
<xs:import schemaLocation="ATISDataContracts.xsd" namespace="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 
<xs:import schemaLocation="Serialization.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
<xs:element name="ASICDetectorInventoryRequestMC"> 
<xs:complexType> 
<xs:sequence> 
<xs:element minOccurs="0" name="DetectorInventoryRequest" nillable="true" type="q1:DetectorInventoryRequestDC" xmlns:q1="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
    <xs:element name="ConnectionRequest" nillable="true" type="q2:ConnectionRequestDC" xmlns:q2="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 

mais quand je développiez le wsdl de mon svc, et je copier/coller le schéma d'importation, je remarque que le contrat de message sont manquantes, bien que le "q1:" etc .. sont corrects. Mon schéma ressemble à ceci.

<xs:schema elementFormDefault="qualified" targetNamespace="http://ws.tcore.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.tcore.com"> 
<xs:import schemaLocation="http://localhost:9305/mex?xsd=xsd1" namespace="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 
<xs:import schemaLocation="http://localhost:9305/mex?xsd=xsd0" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
<xs:element name="DetectorInventoryRequest" nillable="true" type="q1:DetectorInventoryRequestDC" xmlns:q1="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 
<xs:element name="ConnectionRequest" nillable="true" type="q2:ConnectionRequestDC" xmlns:q2="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" /> 

Pour la plupart, il semble identique. Comment puis-je faire apparaître mes éléments MessageContract dans le schéma?

Voici un échantillon d'un contrat de message C# code

namespace tcore.ATISDataContracts 
{ 
    [MessageContract(IsWrapped = false)] 
    public class ASICDetectorInventoryRequestMC 
    { 
     [MessageHeader] 
     public ConnectionRequestDC ConnectionRequest; 

     [MessageBodyMember] 
     public DetectorInventoryRequestDC DetectorInventoryRequest; 
    } 
} 

Leur schéma indique le type complexe, mais mon schéma dérivé ne montrent l'élément et non le type complexe. Qu'est-ce que je fais mal ici? Toute aide ou conseils est appréciée.

Merci pour l'aide,
~ ck à San Diego

Répondre

1

Par défaut, lorsque vos fichiers WSDL sont générés parties du schéma sont répartis dans d'autres fichiers d'importation, qui ne correspondra pas probablement avec les importations qui pourraient avoir été utilisé à l'origine (dans le fichier WSDL fourni par le client, par exemple). Si vous naviguez vers les fichiers XSD importés (http: // localhost: 9305/mex? Xsd = xsd1, par exemple), vous devriez trouver certains des éléments que vous semblez manquer.