2008-10-03 12 views
12

Tôi đang lưu trữ dịch vụ WCF trong Dịch vụ Windows trên một trong các máy chủ của chúng tôi. Sau khi làm cho nó làm việc trong basicHttpBinding và xây dựng một máy khách thử nghiệm trong .NET (mà cuối cùng đã làm việc) tôi đã đi cùng và cố gắng truy cập nó từ PHP bằng cách sử dụng lớp SoapClient. Người tiêu dùng cuối cùng sẽ là một trang web PHP vì vậy tôi cần phải làm cho nó tiêu thụ trong PHP.URL WSDL cho Dịch vụ WCF (basicHttpBinding) được lưu trữ bên trong Dịch vụ Windows

Tôi bị bối rối khi tôi phải nhập url WSDL trong hàm tạo của lớp SoapClient trong mã PHP. WSDL ở đâu? Tất cả tôi có là:

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

Không ai trong số những không vạch trần WSDL.

Là một newbie trong WCF Tôi có thể đã hỏi một điều ngu ngốc (hoặc tôi có thể có một giả định sai ở đâu đó). Xin hãy nhẹ nhàng: D

Và không, http://172.27.7.123:8000/WordService?wsdl không hiển thị bất cứ điều gì khác biệt so với http://172.27.7.123:8000/WordService :(

Tôi buộc phải lưu trữ nó trong IIS Tôi buộc phải sử dụng một WebService thường xuyên

+0

Tốt. Nhờ tìm kiếm, tìm thấy câu hỏi và câu trả lời của bạn –

Trả lời

9

này có thể giúp:

0.123.

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

Tóm lại, bạn cần định cấu hình điểm cuối và hành vi dịch vụ của mình. Dưới đây là ví dụ tối thiểu:

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

Đừng quên xóa nhận xét XML vì chúng không hợp lệ.

+2

Tôi xin lỗi nhưng liên kết dường như bị hỏng –

+0

@Andrei: liên kết có vẻ ổn, MSDN có thể đã có mặt trên một trong những nâng cấp cuối tuần của họ hoặc thứ gì đó. – Kev

+0

Cảm ơn, bây giờ nó hoạt động :) –

1

Xin xem? liên kết này:

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

Cảm ơn bạn cũng vậy :) - tài liệu bạn đã chỉ ra cũng hiển thị httpGetEnabled được đặt thành true. –