2014-10-21 11 views
17

Sto utilizzando Owin per creare un server autoalimentato che supporta sia le richieste di file che le web API. Ma l'output per le richieste di web api è sempre in formato xml. Come posso configurare owin per l'output in JSON?Come rendere Owin il supporto per l'host automatico Uscita Json?

Il codice è il seguente:

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

Quando si effettua la richiesta che risulta in XML, quali intestazioni si sta inviando? Stai inviando un'intestazione 'Accept' che specifica JSON? – David

+0

L'intestazione è come segue: Accetta: text/html, application/xhtml + xml, application/xml; q = 0.9, image/webp, */*; q = 0.8 –

risposta

28

ho trovato il me rispondere. Tutti hanno a che fare è quello di aggiungere un formattatore JSON, come di seguito:

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

Se necessità di convertire enum a stringa aggiungere StringEnumConverter alle impostazioni.

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter()); 
Problemi correlati