WSDL URL para um serviço WCF (basicHttpBinding) hospedado dentro de um serviço do Windows

StackOverflow https://stackoverflow.com/questions/167852

Pergunta

Eu estou hospedando um serviço WCF em um serviço do Windows em um de nossos servidores. Depois de fazê-lo funcionar em basicHttpBinding e construir um cliente de teste em .NET (que finalmente funcionou) eu fui junto e tentar acessá-lo de PHP usando a classe SoapClient. O consumidor final será um site PHP, então eu preciso para torná-lo consumível em PHP.

Eu fiquei perplexo quando eu tive que entrar na url WSDL no construtor da classe SoapClient no código PHP. Onde está a WSDL? Tudo o que tenho é:

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

Nenhum destes não exponha WSDL.

Sendo um novato no WCF Eu poderia ter perguntado uma coisa idiota (ou eu poderia ter um lugar pressuposto errado). Por favor seja gentil: D

E não, http://172.27.7.123:8000/WordService?wsdl não mostram nada diferente do que http://172.27.7.123:8000/WordService : (

Am I forçado para hospedá-lo no IIS? Am I forçado a usar um WebService regular?

Foi útil?

Solução

Isto pode ajudar:

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

Em poucas palavras você precisa configurar seus terminais de serviço e comportamento. Aqui está um exemplo mínimo:

<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ão se esqueça de remover os comentários XML como eles são inválidos onde eles estão.

Outras dicas

Por favor, veja este link:

Expor um serviço WCF Com várias ligações e 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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top