2013-10-29 14 views
8

Niedawno zaktualizowałem wszystkie pakiety Nuget do najnowszej wersji EF6, breeze 1.4.5, system.web.http.odata 5.0.0.0 i wszystkich innych dobrych bitów.MaxExpansionDepth z najnowszą webapi i bryzą

Teraz z jednego zapytania, który zawiera rozszerzenie jak x.y.z pojawia się błąd w następujący sposób:

A first chance exception of type 'Microsoft.Data.OData.ODataException' occurred in System.Web.Http.OData.dll 

Additional information: The request includes a $expand path which is too deep. The maximum depth allowed is 2. To increase the limit, set the 'MaxExpansionDepth' property on QueryableAttribute or ODataValidationSettings. 

zajrzałem do proponowanych poprawek. Jeśli dodam atrybut Queryable w pytaniu o punkt docelowy bryzy, wydaje się, że powoduje on wiele innych problemów. Domyślam się, że zakłóca to oczekiwane zachowanie wiatraka i formatuje wyniki w inny sposób.

Potem spojrzał w użyciu metodę rozszerzenia HttpConfiguration EnableQuerySupport poprzez GlobalConfiguration.Configuration ..., ale wydaje się, że nie mają żadnego wpływu (patrz Supporting OData Query Options)

Czy ktoś ma jakiś pomysł jak mogę zmienić domyślną zachowanie webapi?

Dzięki.

Odpowiedz

20

trzeba dodać atrybut BreezeQueryable do kontrolera wiatr IQueryable metody jak ten ...

[BreezeQueryable(MaxExpansionDepth = 3)] 
    public IQueryable<Customer> Customers() 
    { 
     ... 
    } 
+0

Perfect! Dzięki. Ciekawe, dlaczego zaczęło się teraz narzekać? To musiała być zmiana w najnowszym wydaniu webapi. – Adam

+2

Można również zastosować go na poziomie kontrolera: http: //stackoverflow.com/questions/21635376/how-to-apply-maxexpansiondepth-globally-or-to-an-entire-controller-in-breeze – lnu

+0

Dla nas, musieliśmy użyć BreezeNHQueryable –