2014-10-21 4 views
17

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

कोड के रूप में नीचे है:

class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseFileServer(new FileServerOptions() 
     { 
      RequestPath = PathString.Empty, 
      FileSystem = new PhysicalFileSystem(@".\files") 
     }); 

     // set the default page 
     app.UseWelcomePage(@"/index.html"); 

     HttpConfiguration config = new HttpConfiguration(); 

     config.Routes.MapHttpRoute 
     (
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     app.UseWebApi(config); 
    } 
} 
+0

जब आप अनुरोध करते हैं जो एक्सएमएल में परिणाम देता है, तो आप कौन से शीर्षलेख भेज रहे हैं? क्या आप एक 'स्वीकार करें' शीर्षलेख भेज रहे हैं जो JSON निर्दिष्ट करता है? – David

+0

हेडर नीचे जैसा है: स्वीकार करें: टेक्स्ट/एचटीएमएल, एप्लिकेशन/एक्सएचटीएमएल + एक्सएमएल, एप्लीकेशन/एक्सएमएल; क्यू = 0.9, छवि/वेबपी, */*; क्यू = 0.8 –

उत्तर

28

मैं अपने आप को जवाब देने मिल गया है। सभी क्या करना है नीचे के रूप में एक json फ़ॉर्मेटर जोड़ने के लिए है:

config.Formatters.Clear(); 
config.Formatters.Add(new JsonMediaTypeFormatter()); 
config.Formatters.JsonFormatter.SerializerSettings = 
new JsonSerializerSettings 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver() 
}; 

तो स्ट्रिंग के लिए enum सेटिंग के StringEnumConverter जोड़ने कन्वर्ट करने के लिए की जरूरत है।

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter()); 
संबंधित मुद्दे