2014-05-16 5 views
5

वापस जाने के लिए हमारे वेब एपीआई 2 आवेदन में बदल गया है, हम इस तरह विश्व स्तर पर JSON स्वरूपण कॉन्फ़िगर किया गया:MVC5 - वेबएपीआई 2 - केमलकेस JSON फ़ॉर्मेटर काम करना बंद कर जब नियंत्रक HttpResponseMessage

var jsonformatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;  
jsonformatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

यह महान काम किया - JSON CamelCase था। ।, जब तक हम अपने नियंत्रक तरीकों इस तरह एक HttpReponseMessage (प्रतिक्रिया मॉडल प्रकार सीधे के बजाय) वापस जाने के लिए बदल दिया है:

एक परिवर्तन पैदा करने के लिए MVC JSON फ़ॉर्मेटर का उपयोग नहीं करने के लिए लग रहा था
Request.CreateResponse(HttpStatusCode.OK, response); 

है। हमारा JSON अब कैमलकेस नहीं है।

क्या यह अपेक्षित/डिज़ाइन किया गया व्यवहार है या मैंने फ़ॉर्मेटर को सही तरीके से निर्दिष्ट नहीं किया है?

धन्यवाद, -माइक

उत्तर

6

वास्तविक विधि है कि जब आप Request.CreateResponse का उपयोग कहा जाता है यह है:

public static HttpResponseMessage CreateResponse<T>(
              this HttpRequestMessage request, T value) 
{ 
    return request.CreateResponse<T>(HttpStatusCode.OK, value, configuration: null); 
} 

जैसा कि आप देख विन्यास संपत्ति सिर्फ शून्य पर सेट किया जा रहा है।

तो आप बस मैन्युअल रूप से विन्यास अनुरोध वस्तु से इस तरह ले जा सकते हैं और कॉल एक और अधिभार:

Request.CreateResponse(HttpStatusCode.OK, response, Request.GetConfiguration());

आप और अधिक विस्तार में रुचि रखते हैं, तो आप ढांचे के स्रोत कोड की जांच कर सकते हैं। CreateResponse परिभाषित किया गया है here

+0

हम्म। आपके जवाब के लिए धन्यवाद। लेकिन ऐसा लगता है कि यह अब मेरे निर्दिष्ट स्वरूपकों को नहीं बुला रहा है। पहले मैंने अभी "वापसी प्रतिक्रिया" की थी; (यह मेरे ऊंटकेस फॉर्मेटर का इस्तेमाल किया)। अब मैं "Request.CreateResponse (HttpStatusCode.OK, प्रतिक्रिया)" का उपयोग करता हूं और यह मेरे फॉर्मेटर – HokieMike

+0

का उपयोग नहीं कर रहा है मेरी गलती :) मैंने अपना जवाब अपडेट किया – SoftwareFactor

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