2012-04-19 37 views
5

Đối số ONLY tôi có thể thấy cho SOAP WCF trên REST (json) wcf là một khi dịch vụ của tôi được tạo, tôi có thể thêm tham chiếu aa trong studio trực quan và tôi nhận được một tải các lớp mạnh mẽ đã sẵn sàng cho tôi và một lớp máy khách mà tôi có thể gọi tất cả các webmethod của tôi thông qua. Nó thậm chí còn thiết lập web.config theo như tôi nhớ.Tôi có thể tự động tạo một tham chiếu dịch vụ cho một dịch vụ WCF REST không?

Tuy nhiên khi tôi hiển thị dịch vụ REST (json), tôi vẫn nhận được WSDL. Vì vậy, Im tự hỏi là vẫn còn có một cách để xây dựng tài liệu tham khảo của tôi tự động?

+0

Bạn đã thử thêm tham chiếu vào dịch vụ theo cách "cũ" chưa? [Ví dụ về bảng mã - Bước 4] (https://www.blackbaud.com/files/support/guides/infinitydevguide/Subsystems/inwebapi-developer-help/Content/InfinityWebAPI/coCodeTableExampleBizOps.htm). –

Trả lời

3

Không sử dụng các công cụ WCF. Không giống như với SOAP (trong đó có một giao thức được thiết lập để mô tả các dịch vụ - WSDL), REST thì không. WADL là một giao thức như vậy, nhưng nó không quá phổ biến và WCF không hỗ trợ nó. Bạn vẫn nhận được một WSDL, vì WCF sẽ mô tả mọi thứ có thể từ dịch vụ. Tuy nhiên, WSDL sẽ không có một phần tử <wsdl:port>, mà sẽ mô tả điểm cuối REST, đó là lý do tại sao bạn nhận được WSDL, nhưng không thể tạo ra một tham chiếu đến nó.

Bài đăng tại http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-a-k-a-rest-endpoint-does-not-work.aspx có nhiều thông tin hơn về vấn đề này.

+0

Mã ví dụ của bạn trong chuỗi được liên kết là rất hữu ích Carlos. Tôi có thể đề nghị bạn tóm tắt ở đây và bao gồm mã? –

+0

Mở rộng câu trả lời với nhiều chi tiết hơn. – carlosfigueira

0

Tôi muốn đầu xây dựng:

Mặc dù đó là sự thật bạn không thể có được một WSDL thêm tài liệu tham khảo phục vụ với một dịch vụ JSON REST của WCF, những gì tôi làm là tạo ra hai móc dữ liệu đáp ứng:

  1. là hoạt động trở về JSON
  2. là một op XML đơn trả lại một wrapper class trong đó bao gồm tất cả các lớp dịch vụ tôi cho phép, tôi gọi nó Khám phá:

tức là

public class Discover 
{ 
    public Manager Manager {get;} 
    public Employee Emp {get;} 
    .... 
} 

[OperationContract] 
public Discover DiscoverDTOs() 
Các vấn đề liên quan