2013-02-22 7 views
14

Bazı Karmaşık Türleri içeren bir EF kodu ilk modelim var. Web API denetleyicileri oluşturmak herhangi bir sorun olmadan çalışır, ancak http://blogs.msdn.com/b/yaohuang1/archive/2012/08/15/introducing-the-asp-net-web-api-help-page-preview.aspx'da açıklandığı gibi Web API Yardım Sayfası oluştururken, örnekler oluşturulmaz. Verilen hata iletisidir:Örnekler Varlık Çerçeve Kompleksi kullanıldığında Web API Yardım Sayfası için çalışmayan örnekler

'JsonMediaTypeFormatter' biçimlendiricisi kullanılırken 'application/json' ortam türü için örnek oluşturmak için bir istisna oluştu. İstisna mesajı: Bir veya daha fazla hata oluştu.

Aynı şey, medya türlerinin geri kalanı için de geçerlidir. Karmaşık türler ve serileştirme ile bir süre önce bir sorun olduğunu biliyorum, ancak Json.NET biçimlendiricisi Web API'sinde varsayılan olarak dahil edildiğinde çözüldü.

Bu sorunla ilişkili olabilir mi? Aynı sorunu yaşayan başka biri var mı? Herhangi bir fikir?

cevap

32

Tahminimce bunun büyük olasılıkla modelinizin sahip olduğu referans döngülerinden kaynaklanmasıdır. Örneğin, Json biçimlendiricisine aşağıdaki değişikliği yaparak yardım sayfasını oluşturmayı deneyebilir misiniz? Eğer örnek oluşturulan alma görmelisiniz: Yukarıdaki ayarları yapmazsanız

 config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize; 
     config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; 

Ayrıca, aslında hatta çalışma zamanı sırasında benzer hatayı görmelisiniz.

XmlFormatter ve kendini referanslayan döngüler için here'a bakabilirsiniz.

+0

Kesinlikle haklısınız, referans döngüsüne sahip her modelin de karmaşık bir türü olduğu ortaya çıktı. Çok teşekkür ederim! – kkara

+3

Bunu WebApiConfig.cs içine koymak isteyeceksiniz. – bbodenmiller

+2

Bunu yaparken hala garip $ ref ve $ kimlik etiketleri alıyordum. Daha iyi bir yol buldum: çocuk referansını ebeveyn olarak dahili olarak ayarla. Kaynak: http://truncatedcodr.wordpress.com/2012/09/10/entity-framework-circular-references/ – WiteCastle

İlgili konular