2012-08-02 16 views
8

Tôi đang viết một dịch vụ web có nhiều phương pháp. Tất cả đều được thiết lập tương tự như sau:Làm cách nào để đặt RequestFormat mặc định cho WCF ServiceContract?

[OperationContract] 
    [WebInvoke(
     BodyStyle = WebMessageBodyStyle.Bare, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "x/y/z")] 
    void someMethod(int x, int y, int z); 

Những gì tôi muốn làm là chỉ cần thiết lập mặc định BodyStyle/RequestFormat/ResponseFormat tất cả trong file web.config. Bây giờ, tôi biết tôi có thể làm điều này:

<endpointBehaviors> 
    <behavior name="webHttpBehavior"> 
     <webHttp defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json" /> 
    </behavior> 
    </endpointBehaviors> 

Nhưng dường như không có thuộc tính cho RequestFormat. Làm cách nào tôi có thể đặt mặc định RequestFormat thành JSON?

Trả lời

5

Yêu cầu các loại là automatically interpreted by WCF, bạn không cần phải chỉ định mặc định RequestFormat cho hoạt động dịch vụ của mình.

Nếu bạn đang cố thực thi định dạng yêu cầu được hỗ trợ, hãy xem this related SO post on enforcing request content types.

Lưu ý: không có ý nghĩa khi chỉ định RequestFormat cho hoạt động WebGet. Theo định nghĩa, một số WebGet không được chứa Body là nơi định dạng JSON sẽ tồn tại. Một ví dụ tốt hơn ở đây sẽ là WebInvoke.

+1

Cảm ơn để làm rõ! Vì vậy, miễn là cơ thể chỉ định "ứng dụng/json" định dạng, WCF sẽ tự động nhặt nó lên, chính xác? –

+3

Một mẩu tin thú vị tôi tìm thấy từ liên kết của bạn: "Nếu không có định dạng mặc định nào được chỉ định trên thao tác, giá trị của thuộc tính DefaultOutgoingResponseFormat được sử dụng." Về cơ bản, nếu người đăng không chỉ định loại nội dung và không có RequestFormat trong hoạt động, nó sẽ thực sự nhận định dạng từ defaultOutgoingResponseFormat. Hấp dẫn. –

1

Đặt automaticFormatSelectionEnabled tài sản để true trong webHttp phần tử trong tập tin web.config

<behaviors> 
    <endpointBehaviors> 
     <behavior> 
     <webHttp automaticFormatSelectionEnabled="true" /> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 


ví dụ: bạn có thể đặt Accept:application/json trong recieving cuối và nhận được kết quả JSON.

màn hình đưa thư

Json response

================================== ==================================

Xml response


https://msdn.microsoft.com/en-us/library/ee476510(v=vs.110).aspx

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