문제

서버 중 하나의 Windows 서비스에서 WCF 서비스를 호스팅하고 있습니다. Basichttpbinding에서 작동하고 .NET (마지막으로 작동)에 테스트 클라이언트를 구축 한 후에는 SOAPClient 클래스를 사용하여 PHP에서 액세스하려고합니다. 최종 소비자는 PHP 사이트가되므로 PHP에서 소모품을 만들어야합니다.

PHP 코드에서 Soapclient 클래스의 생성자에 WSDL URL을 입력해야했을 때 혼란스러워했습니다. WSDL은 어디에 있습니까? 내가 가진 것은 다음과 같습니다.

http://172.27.7.123:8000/wordservice 그리고http://172.27.7.123:8000/wordservice/mex

이들 중 어느 것도 WSDL을 노출시키지 않습니다.

WCF의 초보자이기 때문에 멍청한 것을 물었을 수도 있습니다 (또는 어딘가에 잘못된 가정이있을 수 있습니다). 부드럽게 해주세요 : d

그리고 아니, http://172.27.7.123:8000/wordservice?wsdl 다른 것과는 다른 것을 보여주지 않습니다 http://172.27.7.123:8000/wordservice :(

IIS에서 호스팅해야합니까? 정기적 인 웹 서비스를 사용해야합니까?

도움이 되었습니까?

해결책

도움이 될 수 있습니다 :

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

간단히 말해서 서비스 엔드 포인트 및 동작을 구성해야합니다. 다음은 최소한의 예입니다.

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

XML 주석이 유효하지 않기 때문에 XML 주석을 제거하는 것을 잊지 마십시오.

다른 팁

이 링크를 참조하십시오 :

다중 바인딩 및 엔드 포인트가있는 WCF 서비스를 노출시킵니다

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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top