2008-10-03 4 views
12

J'héberge un service WCF dans un service Windows sur l'un de nos serveurs. Après l'avoir fait fonctionner dans basicHttpBinding et construit un client de test dans .NET (qui a finalement fonctionné) je suis allé et j'essayais d'y accéder depuis PHP en utilisant la classe SoapClient. Le consommateur final sera un site PHP donc j'ai besoin de le rendre consommable en PHP.URL WSDL pour un service WCF (basicHttpBinding) hébergé dans un service Windows

J'ai été dérouté quand j'ai dû entrer l'URL WSDL dans le constructeur de la classe SoapClient dans le code PHP. Où est le WSDL? Tout ce que j'ai est:

http://172.27.7.123:8000/WordService et http://172.27.7.123:8000/WordService/mex

Aucun d'entre eux ne pas exposer WSDL. Etre un débutant dans la WCF, je pourrais avoir demandé une chose stupide (ou je pourrais avoir une mauvaise supposition quelque part). S'il vous plaît être doux: D

Et non, http://172.27.7.123:8000/WordService?wsdl ne montre pas quelque chose de différent que http://172.27.7.123:8000/WordService :(

Suis-je obligé de l'héberger dans IIS Suis-je obligé d'utiliser un WebService régulier

+0

Nice. Merci à la recherche, trouvé votre question et réponses –

Répondre

9

cela pourrait aider:

http://msdn.microsoft.com/en-us/library/ms734765.aspx

En quelques mots, vous devez configurer vos paramètres de service et le comportement. Voici un exemple minimal:

<system.serviceModel> 
    <services> 

    <service 
     <!-- Namespace.ServiceClass implementation --> 
     name="WcfService1.Service1" 

     <!-- User behaviour defined below --> 
     behaviorConfiguration="SimpleServiceBehaviour"> 

     <endpoint 
     address="" 
     binding="basicHttpBinding" 
     <!-- Namespace.Interface that defines our service contract --> 
     contract="WcfService1.IService1"/> 

    </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="SimpleServiceBehaviour"> 

     <serviceMetadata 
      <!-- We allow HTTP GET --> 
      httpGetEnabled="true" 

      <!-- Conform to WS-Policy 1.5 when generating metadata --> 
      policyVersion="Policy15"/> 

     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

N'oubliez pas de supprimer les commentaires XML car ils ne sont pas valides là où ils se trouvent.

+2

Je suis désolé, mais le lien semble être rompu –

+0

@Andrei: lien semble bien, MSDN aurait pu être sur l'une de leurs mises à jour de week-end ou quelque chose. – Kev

+0

Merci, maintenant ça marche :) –

1

s'il vous plaît voir? ce lien:

Exposing a WCF Service With Multiple Bindings and Endpoints

 
Unlike previous ASMX services, the WSDL (web service definition language) for WCF 
services is not automatically generated. The previous image even tells us that 
"Metadata publishing for this service is currently disabled.". 
This is because we haven't configured our service to expose any meta data about it. 
To expose a WSDL for a service we need to configure our service to provide meta information. Note: 
The mexHttpBinding is also used to share meta information about a service. While 
the name isn't very "gump" it stands for Meta Data Exchange. 
+0

Merci aussi :) - le document que vous avez souligné montre également le jeu httpGetEnabled à vrai. –

Questions connexes