2008-10-03 15 views
12

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 test in .NET (che alla fine ha funzionato) sono andato avanti e ho cercato di accedervi da PHP usando la classe SoapClient. Il consumatore finale sarà un sito PHP quindi ho bisogno di renderlo consumabile in PHP.URL WSDL per un servizio WCF (basicHttpBinding) ospitato all'interno di un servizio Windows

Sono stato bloccato 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 esporre WSDL.

Essendo un novizio in WCF, avrei potuto chiedere una cosa stupida (o potrei avere un'assunzione errata da qualche parte). Si prega di essere gentile: D

E no, http://172.27.7.123:8000/WordService?wsdl non mostra nulla di diverso rispetto http://172.27.7.123:8000/WordService :(

Perchè sono costretto a ospitarlo in IIS sono costretto ad usare un webservice normale

+0

Bello. Grazie alla ricerca, hai trovato la tua domanda e risposte –

risposta

9

questo potrebbe aiutare:

0.123.

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

In poche parole è necessario configurare gli endpoint di servizio e comportamento. 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 in quanto non sono validi dove si trovano.

+2

Mi dispiace ma il link sembra essere rotto –

+0

@Andrei: link sembra a posto, MSDN potrebbe essere stato in uno dei loro aggiornamenti del fine settimana o qualcosa del genere. – Kev

+0

Grazie, ora funziona :) –

1

Si prega di vedere?? questo link:

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

Grazie anche a te :) - il documento che hai indicato mostra anche l'httpGetEnabled impostato su true. –