2009-08-28 5 views
2

i a obtenu un webservicedefinition comme ceci:problème WCF WebInvoke obtenir WSDL

[OperationContract] 
    [FaultContract(typeof(Exception))] 
    [WebInvoke(ResponseFormat = WebMessageFormat.Xml, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      RequestFormat = WebMessageFormat.Xml)] 
    SearchResponse SearchXML(SearchRequest req); 

et une configuration de service comme celui-ci:

<service name="SearchEngine.SearchService" behaviorConfiguration="HTTPGetBehavior"> 
    <endpoint address="SearchEngine.SearchService" behaviorConfiguration="ajaxBehavior" binding="webHttpBinding" contract="SearchEngine.ISearchInterface" /> 
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8800/SearchService" /> 
     </baseAddresses> 
    </host> 
    </service> 

et je veux obtenir le fichier WSDL, qui devrait être possible avec une requête HTTP GET comme ceci:

http://localhost:8800/SearchService?wsdl 

Mais iam obtenir est une « méthode non autorisée message par le WCF service »

Qu'est-ce que je fais de mal? Je veux les informations WSDL pour afficher la structure de la demande et la réponse à un client externe (afin qu'il puisse préparer ses appels de fonction)

Merci

+0

voir mon nouveau rép er - est-ce que cela résout votre problème? WebHttpBinding (REST) ​​n'a pas de WSDL - c'est seulement disponible quand on fait des appels SOAP –

Répondre

2

Eh bien, si je lis la liaison correctement, vous utilisez la "webHttpBinding" qui est une interface REST.

REST ne pas avoir quelque chose comme le fichier WSDL - c'est une chose SOAP. REST est considéré comme plus facile à utiliser et plus simple à comprendre - mais il n'a pas la quantité de métadonnées qu'un service Web SOAP typique aura. Donc, fondamentalement, si vous restez avec REST (webHttpBinding), vous ne pouvez pas avoir un WSDL - vous devez trouver un autre moyen de communiquer vos méthodes de service exposées et les paramètres possibles qu'ils attendent. Il semble y avoir des efforts en cours pour trouver quelque chose de similaire à un WSDL pour REST appelé Web Application Description Language (WADL) mais je ne sais pas jusqu'où cet effort est venu, et pour autant que je sache, le kit de démarrage WCF REST ne ne supporte pas cela pour le moment.

Découvrez quelques liens pour WADL:

Marc

+0

Oui, je l'ai déjà fait, donc c'est juste manquant dans le code ci-dessus ... d'autres idées? – David