2014-10-21 17 views
17

Hem dosya isteklerini hem de web API'sini destekleyen kendiliğinden barındırılan bir sunucu oluşturmak için Owin kullanıyorum. Ancak web API istekleri için çıktı her zaman xml biçimindedir. Owin'i jsonda çıktı olarak nasıl yapılandırabilirim?Owin kendini ana bilgisayar desteği Json çıkışı nasıl yapılır?

kod aşağıdaki gibidir:

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

XML ile sonuçlanan isteği yaptığınızda, hangi üstbilgileri gönderiyorsunuz? JSON'u belirten bir "Accept" başlığı gönderiyor musunuz? – David

+0

Başlık aşağıdaki gibidir: Kabul: metin/html, uygulama/xhtml + xml, uygulama/xml; q = 0,9, resim/webp, */*; q = 0.8 –

cevap

28

Kendimi cevap bulduk. Tüm yapmanız gereken aşağıdaki gibi bir json biçimlendirici eklemektir:

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

Eğer dizeye enum ayarlarına StringEnumConverter eklemek dönüştürmek gerekir.

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter()); 
İlgili konular