2015-01-16 11 views
6

Bir PUT çağrısı işlerken, bir WebAPI işleyicisi modeli doğrularken yığın taşması türü durumuna gider gibi görünüyor. Özel durum açık değildir ve modelde bu doğrulama sınıfının bir döngüye girmesine neden olan hiçbir belirti yoktur. Hata ayıklayıcının takılması hiçbir şey yapmaz. İşleyici asla çağrılmayacak, seri hale getirici gönderilen olayı jsonu normalde olaysız bir şekilde seri hale getirecektir. Neyin yanlış olabilir?WebAPI PUT DbGeography ile YetersizExecutionStackException Tür

Aşağıdaki kod sadece güvenli programın işleyişine devam etmesini istisna"

Yetersiz yığın atma çıkmadan önce birkaç yüz kat döngüler. Bu çağrı yığını üzerinde çok fazla işlev sahip olmaktan gerçekleşmesi veya üzerinde çalışabilir yığını çok fazla yığın alanı kullanarak.

at System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack() 
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable`1 validators) 
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext) 

modeli Bu basit örnekte benzer. modeli varsayılan val vardır Onaylayabildiğim tümler başlatıldı. Modelin kendisinde de bir referansı yoktur. içinde

public class Example { 
    [Required] 
    public string test {get; set;} 

    [Required] 
    public CustomEnumType myEnum {get; set;} 
} 

cevap

7

Bulunan çözelti: bu model tipleri Exclude a type from model validation (example DbGeography) to avoid InsufficientExecutionStackException

One DbGeography olup. Herhangi bir nedenden ötürü varsayılan doğrulayıcı, bu türün özelliklerini sıralayan bir döngüde sıkışır. Doğrulayıcı bile orada olmamalı ve bir hata gibi görünüyor. Ancak davranış, bu türü yoksaymak için özel bir doğrulayıcı kümeyle birlikte geçersiz kılınabilir.

+0

Vay. Bunu bulamazsam, günlerimi kaybederdim. Beni kurtardığın için teşekkürler. –