2012-12-28 9 views
5

मेरे पास एक आरईएसटी सेवा है जिसमें कई ग्राहक इसका उपभोग कर रहे हैं, जहां तक ​​मैं कह सकता हूं, केवल POST/PUT करते समय JSON स्वीकार करें (और केवल सभी कॉल पर JSON लौटाएं)। मुद्दा यह है कि सेवा/सहायता पृष्ठ पर, यह JSON और XML दोनों के उदाहरण दिखाता है। क्या सभी अतिरिक्त एक्सएमएल कचरा हटाने का कोई तरीका है ताकि उपयोगकर्ताओं को भ्रमित न किया जा सके (क्योंकि, फिर से, सेवा केवल जेएसओएन स्वीकार करती है) और केवल सहायता पृष्ठ पर JSON उदाहरण प्रदर्शित करती है? यहाँ मेरी Web.config है:डब्ल्यूसीएफ आरईएसटी सेवा में एक्सएमएल उदाहरण अक्षम करें?

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

और मेरे GetGets से प्रत्येक/WebInvokes डब्ल्यू/JSON प्रारूपों के रूप में, उदाहरण के लिए परिभाषित कर रहे हैं:

[WebInvoke(UriTemplate = "/sample", BodyStyle = WebMessageBodyStyle.Bare, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 

तो, ऐसा कुछ हो रहा यह बताने के लिए क्या कर सकते हैं सेवा को पता है कि यह JSON केवल है और ऑटो-जेन एक्सएमएल जंक को मेरे/सहायता पृष्ठों को बंद कर रहा है?

+0

मुझे यकीन नहीं है कि आप सहायता पृष्ठों से XML उदाहरण अक्षम कर सकते हैं या नहीं। [Autodocs] (http://autodocs.codeplex.com/) पर एक नज़र डालें। आप एक्सएमएल उदाहरण दिखाने से रोकने के लिए शायद इसे संशोधित कर सकते हैं। – Obaid

+0

आप अपनी स्वयं की सहायता फ़ाइल लिख सकते हैं और फ्रेमवर्क द्वारा डिफ़ॉल्ट जेनरेट की गई फ़ाइल का उपयोग करने के बजाए प्रदर्शित कर सकते हैं। – Rajesh

+0

नीचे दिए गए मेरे उत्तर को देखने के लिए सुनिश्चित करें ... यहां बहुत सारी गलत जानकारी है। आप ** ** ऑटो-जेनरेटेड हेल्प पेज ** का उपयोग कर सकते हैं ** और ** क्या यह एक्सएमएल नहीं दिखाता है। –

उत्तर

0

आप अपने web.config को यह जोड़कर मदद पृष्ठ को निष्क्रिय कर सकते हैं:

<webServices> 
<protocols> 
    <remove name="Documentation" /> 
</protocols> 
</webServices> 

source

+0

मैं सभी मदद अक्षम करने की कोशिश नहीं कर रहा हूं, मैं/सहायता पृष्ठ से कचरा एक्सएमएल उदाहरणों को हटाने की कोशिश कर रहा हूं, क्योंकि सेवा एक्सएमएल स्वीकार करने के लिए कॉन्फ़िगर नहीं है। साथ ही, ऐसा प्रतीत होता है कि ऊपर पोस्ट की गई कॉन्फ़िगरेशन आपके पास कॉन्फ़िगरेशन पर प्राथमिकता लेती है, जैसा कि मैंने कोशिश की थी और/सहायता अभी भी सक्षम थी। लेकिन परवाह किए बिना, मैं इसे सक्षम करना चाहता हूं। –

0

मैं साथ कैसे एमएस इस सुविधा को लागू बहुत दुखी था। वे आउटपुट पर कोई नियंत्रण नहीं देते हैं और सभी कार्यान्वयन विवरण निजी हैं। इंटरफेस, कक्षाएं, आदि ...

मैंने अन्य कारणों से अपना स्वयं का नमूना जनरेटर बनाना समाप्त कर दिया लेकिन इससे संबंधित सभी कोड पढ़ने के बाद मैं आपको यह सुनिश्चित कर सकता हूं कि आप व्यवहार को नियंत्रित नहीं कर सकते हैं।

वैकल्पिक रूप से, और यदि आप इसके बारे में दृढ़ता से महसूस करते हैं, तो आप एक IOperationBehavior जोड़ सकते हैं और XML उदाहरण आउटपुट को पट्टी कर सकते हैं। मार्क अप अच्छी तरह से स्वरूपित है और आप आसानी से पार्स और अंतिम मार्क अप से निकालने के लिए अनुभागों को ढूंढने में सक्षम होना चाहिए।

यदि आपको लगता है कि आप इसे आगे बढ़ाना चाहते हैं तो मुझे बताएं और मैं आपको अधिक जानकारी दे सकता हूं।

3

अपना Microsoft.ApplicationServer.Http.HttpConfiguration config लें और इसे XmlFormatter हटाएं (इसमें डिफ़ॉल्ट रूप से एक JSON फ़ॉर्मेटर और एक्सएमएल फॉर्मेटर है)।

var config = new Microsoft.ApplicationServer.Http.HttpConfiguration(); 
config.Formatters.Remove(config.Formatters.XmlFormatter); 

अब आप इस विन्यास के साथ एक HttpServiceHostFactory बनाते हैं, और का उपयोग करें कि मार्गों रजिस्टर करने के लिए कर सकते हैं।

//RouteTable is of type System.Web.Routing.RouteCollection 
RouteTable.Add(new WebApiRoute(
    "MyService", 
    new HttpServiceHostFactory { Configuration = config }, 
    typeof(MyService))); 

मेरे पास "यह मेरे लिए काम करता है" के अलावा आपके लिए कोई विश्वसनीय स्रोत नहीं है।

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