2009-07-16 41 views
5

Tôi có một dịch vụ web hiện có trả về các phản hồi XML và tôi muốn thêm một số phương thức mới trả về JSON. Tôi có phải tạo một dịch vụ web riêng biệt trả về bằng JSON hoặc tôi có thể có kết hợp không?Trả về định dạng JSON và XML từ dịch vụ web .NET 3.5 WCF (REST) ​​

Nếu tôi sử dụng ResponseFormat = WebMessageFormat.JSON tôi cần phải có dịch vụ chú thích với [DataContractFormat] nhưng tôi không thể có và [XmlSerializerFormat] được yêu cầu cho định dạng phản hồi kiểu xml.

Trả lời

3

Tôi không hiểu tại sao điều này là không thể. Bạn chú thích dịch vụ với thuộc tính [ServiceContract] (không phải DataContractFormat). Hình ảnh trông giống như

[ServiceContract] 
    public interface IDoStuff 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", 
      UriTemplate = "DoStuff", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     TestObj DoWork(TestInputObj Inp); 
    } 

Để làm cho nó xml, chỉ cần thay đổi responseformat. Khi bạn thực hiện lệnh post, bạn sẽ nhận được json, một phương thức riêng biệt với định dạng xml sẽ cho bạn xml.

1

Bạn có biết thực tế là bạn cần XmlSerializerFormat không? Điều đó chỉ cần thiết nếu bạn cần serialize vào XML mà không tuân thủ các quy tắc cho Serializer dữ liệu hợp đồng.

Nếu bạn cần điều đó, bạn cần dịch vụ thứ hai. Đó là khá dễ dàng mặc dù. Chỉ cần giải nén các đường ruột của các hoạt động chung vào các phương thức riêng biệt, sau đó gọi các phương thức đó từ cả hai dịch vụ.

0

Tôi tin rằng bạn đang phân bổ thuộc tính XMLSerilization trong dán dưới dạng loại xml. Nếu vậy nó sẽ không ảnh hưởng đến dữ liệu json của bạn. bạn có thể sử dụng nó để serilize cả XML & Json. response.Content.ReadAsJsonDataContract()/ReadAsXmlDataContract() trong đó T là kiểu XMLSerilizable.

Các vấn đề liên quan