2015-01-16 6 views
6

Podczas obsługi wywołania PUT, procedura obsługi WebAPI wydaje się przechodzić w sytuację typu przepełnienia stosu podczas sprawdzania poprawności modelu. Wyjątek nie jest jasny i nie ma wskazania, co w modelu powoduje, że ta klasa walidacji przechodzi w pętlę. Dołączanie debuggera nic nie robi. Handler nigdy nie zostanie wywołany, serializer będzie deserializował wysłany json normalnie bez incydentów. Co może być nie tak?WebAPI PUT niewystarczający wyjątek wyjątku Exception z DbGeography Type

Poniższy kod tylko pętle kilkaset razy przed wyjściem rzuca wyjątek”

Niewystarczająca stosu, aby kontynuować wykonywanie programu bezpiecznie. Można zdarzyć ze zbyt wielu funkcji na stosie wywołań lub działać na stos używając zbyt wiele miejsca stosu.

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) 

model jest podobny do tego prostego przykładu. Model posiada domyślną val Wszystkie, które mogę potwierdzić, zostały zainicjowane. Model również nie ma żadnych odniesień do samego siebie.

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

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

Odpowiedz

7

Znaleziono rozwiązanie w: Exclude a type from model validation (example DbGeography) to avoid InsufficientExecutionStackException

jeden z typów w tym modelu jest DbGeography. Domyślny walidator z jakiegoś powodu utknie w pętli wewnątrz tego typu wyliczając jego właściwości. Walidator nie powinien nawet tam być i wydaje się być błędem. Ale zachowanie może być przesłonięte przez niestandardowy zestaw sprawdzania poprawności, aby zignorować ten typ.

+0

Wow. Gdybym tego nie znalazł, straciłbym wiele dni. Dzięki za uratowanie mnie. –

Powiązane problemy