2012-08-24 16 views
6

Birkaç gün boyunca bu sorunu yaşıyorum (şimdi bu sorunla karşılaşan ve saçlarını çeken herkes için sabit ve çözüm belirtildi).MVC WebAPI hiçbir bilgi vermeden 500 hata döndürüyor

Veri için MVC4 WebAPI kullanan Silverlight uygulamamdaki en son kod değişiklikten sonra, IQueryable<oneofmyclasses> döndüren HttpGet Eylemlerimden birinde bir sorunla karşılaşıyordum. Talebi izlemek için Fiddler2 kullanarak, neden açıklamak için hiçbir vücut metin ile bir iç sunucu hatası (500) alıyordum görebiliyordu. Eylemimde hiç hata almadım.

1: numaralı belgeyi kontrol edin İşlemimin gerçekten hatasız olarak return collection.AsQueryable(); hattına ulaştığını doğruladım. benim verileri (g benim koleksiyon) bu kodu kullanarak hatasız JSON seri hale doğruladıktan: Bu aynı zamanda çalıştı

var json = new JsonMediaTypeFormatter(); 
      json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects; 
      ObjectContent<IEnumerable<Model.MenuGroup>> responseContent = new ObjectContent<IEnumerable<Model.MenuGroup>>(g, json); 
      MemoryStream ms = new MemoryStream(); 

      responseContent.CopyToAsync(ms).Wait(); 
      ms.Position = 0; 
      var sr = new StreamReader(ms); 
      var str = sr.ReadToEnd(); 

O

Kontrol 2 oldu. Ben sadece JSON kullanılan (çok dikkatli olamaz) oldukça emin olsa bile ben XML biçimlendirici kullanarak test.

Kontrol 3: Etkin .Net Framework hata ayıklama. Hata oluştuğunda (HttpApplication.cs) VS 2012 bu kez yakaladı.

Benim hatası: Net Kaynak bir benim özelliklerin biri olsun çağırıyordu

[XmlIgnore] 
[IgnoreDataMember] 
[JsonIgnore] 

bu özelliklere sahip özelliğini işaretlenmiş olması rağmen

. Yakalama, sadece bir yazıydı. Ben sadece

get { return null; } 

ekledim ve sorun çözüldü.

Muhtemelen ilk önce Check 3'ü bitirmeliydim, fakat bu hata ile yaptığım önceki deneyimim, genellikle nesnelerimi serileştirmeye çalışan bir hata olduğunu gösteriyordu, bu yüzden serileştirildiklerinde bir kafa çizicisi vardı. düzgün ve hata devam etti. Ben onu çözdüm nasıl

+0

Bunu çözebildiğine sevindim. Cevap olarak çözen çek yazmalısın. :) –

+0

http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500-internal-server-error/34352049#34352049 yardımcı olabilir. – GGleGrand

cevap

6

:

Etkin .Net Framework ayıklama. Araçlar -> Seçenekler -> Hata ayıklama -> '.NET Framework kaynağını etkinleştirme' seçeneğinin işaretini kaldırın '

Hata oluştuğunda (HttpApplication.cs içinde) VS 2012, bu kez yakaladı.