Question

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 avoir créé un client de test dans .NET (ce qui a finalement fonctionné), j'ai essayé d'y accéder depuis PHP en utilisant la classe SoapClient. Le consommateur final sera un site PHP, je dois donc le rendre consommable en PHP.

Je me suis retrouvé coincé lorsque 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 de ceux-ci n'expose pas WSDL.

Étant un débutant dans la WCF, j’aurais peut-être posé une question idiote (ou j’aurais peut-être une fausse hypothèse quelque part). S'il vous plaît soyez doux: D

Et non, http://172.27.7.123:8000/WordService?wsdl ne le fait pas. ne rien afficher de différent de http://172.27.7.123:8000/WordService : (

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

Était-ce utile?

La solution

Cela pourrait aider:

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

En résumé, vous devez configurer vos points de terminaison de service et votre 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.

Autres conseils

S'il vous plaît voir ce lien:

Présentation d'un service WCF avec plusieurs liaisons et points finaux

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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top