2010-11-15 3 views
3

J'ai un ancien client de service Web qui doit parler à mon service WCF 4.0. Le client est un grand système ancien dans une autre entreprise qui ne va pas changer. Nous avons de nouveaux clients qui ont besoin de la fonctionnalité WCF, donc nous l'avons, mais maintenant plus de travail est nécessaire pour soutenir l'ancien client.Faire WCF 4 WSDL ressembler au service Web WSDL?

J'ai décoré plusieurs parties du service WCF avec des attributs, et une grande partie du WSDL émis ressemble au service Web que l'ancien client appelait. J'ai encore quelques pièces qui ne ressemblent pas à l'héritage. Où puis-je chercher à faire ressembler le nouveau serveur à l'ancien?

L'ancien (Service Web) Système a:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input message="tns:SubmitRequestSoapIn"/> 
<wsdl:output message="tns:SubmitRequestSoapOut"/> 
</wsdl:operation> 
</wsdl:portType> 

Le nouveau système (service WCF) a:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input wsaw:Action="https://test.com/SubmitRequest" message="tns:QueueServiceSoap_SubmitRequest_InputMessage"/> 
<wsdl:output wsaw:Action="https://test.com/QueueServiceSoap/SubmitRequestResponse" message="tns:QueueServiceSoap_SubmitRequest_OutputMessage"/> 
</wsdl:operation> 
</wsdl:portType> 

Je dois changer le service WCF pour ressembler à la WS un. .. Aidez-moi?

Merci!

+0

Publiez votre service ici liant s'il vous plaît. – Aliostad

+0

Pourquoi pensez-vous que vous devez changer le WSDL? Est-ce que le vieux client a besoin de le lire? Est-ce que cela cause un problème? Les formats de message sont-ils différents? Vous n'avez pas vraiment dit ce qui ne va pas. –

Répondre

0

Créez un HttpModule qui gère BeginRequest, en utilisant celui-ci pour attacher un filtre de réponse lorsque WSDL est demandé pour (Request["WSDL"] != null). Le filtre de réponse sera une classe que vous écrivez qui hérite de MemoryStream, qui va modifier la réponse de manière appropriée.

Ajouter une bonne référence pour écrire le filtre de réponse peut être trouvé à http://www.4guysfromrolla.com/articles/120308-1.aspx

+1

cela fonctionnera pour une requête "? WSDL", mais pas pour une demande d'échange de métadonnées. Aussi, que se passe-t-il si son nouveau service _does_ correspond à son nouveau WSDL? Il vaudrait mieux que le _service_ corresponde à l'ancien WSDL avant qu'il ne s'inquiète d'obtenir que le _WSDL_ corresponde à l'ancien WSDL. –

Questions connexes