Domanda

Sto ospitando un servizio WCF in un servizio Windows su uno dei nostri server. Dopo averlo fatto funzionare in basicHttpBinding e aver creato un client di prova in .NET (che alla fine ha funzionato) sono andato avanti e ho provato ad accedervi da PHP usando la classe SoapClient. Il consumatore finale sarà un sito PHP, quindi devo renderlo consumabile in PHP.

Sono rimasto sconcertato quando ho dovuto inserire l'URL WSDL nel costruttore della classe SoapClient nel codice PHP. Dov'è il WSDL? Tutto quello che ho è:

http://172.27.7.123:8000/WordService e http://172.27.7.123:8000/WordService/mex

Nessuno di questi non espone WSDL.

Essendo un principiante in WCF avrei potuto chiedere una cosa stupida (o potrei avere un'ipotesi sbagliata da qualche parte). Per favore sii gentile: D

E no, http://172.27.7.123:8000/WordService?wsdl no mostra qualcosa di diverso da http://172.27.7.123:8000/WordService :(

Sono costretto a ospitarlo in IIS? Sono costretto a utilizzare un normale servizio Web?

È stato utile?

Soluzione

Questo potrebbe aiutare:

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

In poche parole è necessario configurare gli endpoint e il comportamento del servizio. Ecco un esempio minimo:

<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>

Non dimenticare di rimuovere i commenti XML poiché non sono validi dove si trovano.

Altri suggerimenti

Vedi questo link:

Esposizione di un servizio WCF con più binding ed endpoint

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top