2013-10-29 18 views
8

Ich habe kürzlich alle meine nugget-Pakete auf die neuesten für EF6, Brise 1.4.5, system.web.http.odata 5.0.0.0 und alle anderen guten Bits aktualisiert.MaxExpansionDepth mit der neuesten Webapi und Brise

Jetzt, mit einer Abfrage, die eine Erweiterung wie x.y.z enthält bekomme ich einen Fehler wie folgt:

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. 

ich in die vorgeschlagenen Korrekturen sah. Wenn ich ein Queryable-Attribut auf dem Brise-Endpunkt hinzufüge, scheint es alle möglichen anderen Probleme zu verursachen. Meine Vermutung ist, dass es das erwartete Verhalten von Brise stört und die Ergebnisse anders formatiert.

Ich sah dann in denen die HttpConfiguration EnableQuerySupport Erweiterung Methode, durch GlobalConfiguration.Configuration ..., aber das scheint keine Wirkung zu haben (siehe Supporting OData Query Options)

eine Ahnung Hat jemand wie ich den Standard ändern Webapi Verhalten?

Danke.

Antwort

20

Sie benötigen ein BreezeQueryable Attribut zu Ihrer Brise Controller IQueryable Methode wie folgt ...

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

Perfekt hinzuzufügen! Vielen Dank. Ich frage mich, warum es sich erst jetzt beschwert hat? Muss eine Änderung in der neuesten Webapi-Version gewesen sein. – Adam

+2

Sie können es auch auf einer Controller-Ebene anwenden: http: //stackoverflow.com/questions/21635376/how-to-apply-maxexpansiondepth-globally-or-an-entire-controller-in-breeze – lnu

+0

Für uns, wir brauchten das BreezeNHQueryable –