2012-08-02 17 views
8

मैं एक वेब सेवा लिख ​​रहा हूं जिसमें बहुत सी विधियां हैं। वे सभी स्थापित कर रहे हैं निम्न के समान:डब्ल्यूसीएफ सेवा नियंत्रण के लिए डिफ़ॉल्ट अनुरोधफॉर्मैट कैसे सेट करें?

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

मुझे क्या करना सिर्फ डिफ़ॉल्ट BodyStyle/RequestFormat/ResponseFormat web.config फ़ाइल में सभी सेट किया गया है चाहता हूँ। अब, मैं जानता हूँ कि मैं यह कर सकता हूँ:

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

लेकिन वहाँ RequestFormat के लिए एक विशेषता होने के लिए प्रतीत नहीं होता। मैं JSON पर डिफ़ॉल्ट RequestFormat कैसे सेट कर सकता हूं?

उत्तर

5

अनुरोध प्रकार automatically interpreted by WCF हैं, आपको अपने सेवा संचालन के लिए डिफ़ॉल्ट RequestFormat निर्दिष्ट करने की आवश्यकता नहीं है।

यदि आप समर्थित अनुरोध प्रारूप को लागू करने का प्रयास कर रहे हैं, तो this related SO post on enforcing request content types देखें।

नोट: यह भावना एक WebGet ऑपरेशन के लिए एक RequestFormat आवंटित करने के लिए नहीं है। परिभाषा के अनुसार, WebGet में Body नहीं हो सकता है, जहां JSON प्रारूप मौजूद होगा। यहां एक बेहतर उदाहरण WebInvoke होगा।

+1

धन्यवाद स्पष्टीकरण के लिए! इसलिए जब तक कि शरीर "एप्लिकेशन/जेसन" प्रारूप निर्दिष्ट करता है, डब्लूसीएफ स्वचालित रूप से इसे उठाएगा, सही? –

+3

आपके लिंक से मिली एक दिलचस्प बात: "यदि ऑपरेशन पर कोई डिफ़ॉल्ट प्रारूप निर्दिष्ट नहीं है, तो DefaultOutgoingResponseFormat प्रॉपर्टी का मान उपयोग किया जाता है।" तो मूल रूप से, यदि पोस्टर सामग्री प्रकार निर्दिष्ट नहीं करता है, और ऑपरेशन पर कोई अनुरोधफॉर्मैट नहीं है, तो यह वास्तव में डिफ़ॉल्टऑटगोइंग रेस्पॉन्सफॉर्मैट से प्रारूप को उठाएगा। दिलचस्प। –

1

web.config फ़ाइल

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


जैसे में तत्व webHttp में true करने के लिए automaticFormatSelectionEnabled संपत्ति सेट करें: आप अंत प्राप्त करने में Accept:application/json सेट और JSON परिणाम प्राप्त कर सकते हैं।

डाकिया स्क्रीन

Json response

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

Xml response


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

संबंधित मुद्दे