Как увеличить потолок размера буфера данных для запросов RIA Services?

Для любого гуру служб RIA, кто-нибудь знает, как увеличить максимальный размер буфера данных для данных запроса служб RIA, возвращающихся клиенту Silverlight?

У меня есть запрос служб RIA, в котором он возвращает родительский объект вместе с довольно большим количеством дочерних коллекций объектов, возвращающихся как часть ответа с данными. Код моего запроса RIA Services начинается так:

   1:  [EnableClientAccess()]
   2:  public class ContactsDomainService : LinqToEntitiesDomainService
   3:  {
   4:       [Query(ResultLimit = 150)]
   5:       public IQueryable SearchContacts(string jobFunction = default(string),
   6:                                                    string workPhone = default(string),
   7:                                                    string officeLocation = default(string),
   8:                                                    string firstName = default(string),
   9:                                                    string lastName = default(string),
  10:                                                    string address1 = default(string),
  11:                                                    string address2 = default(string),
  12:                                                    string city = default(string),
  13:                                                    int stateTypeId = 0,
  14:                                                    string zip = default(string),
  15:                                                    string email = default(string),
  16:                                                    Nullable departmentTypeId = null,
  17:                                                    Nullable sectionTypeId = null,
  18:                                                    Nullable divisionTypeId = null,
  19:                                                    Nullable governmentTypeId = null)
  20:       {
  21:            var results = from r in this.ObjectContext.Contacts
  22:                                       .Include("ContactAddresses")
  23:                                       .Include("ContactAddresses.CityType")
  24:                                       .Include("ContactAddresses.StateType")
  25:                                       .Include("ContactDepartments")
  26:                                       .Include("ContactDepartments.DepartmentType")
  27:                                       .Include("ContactDivisions")
  28:                                       .Include("ContactDivisions.DivisionType")
  29:                                       .Include("ContactEmails")
  30:                                       .Include("ContactGovernments")
  31:                                       .Include("ContactGovernments.GovernmentType")
  32:                                       .Include("ContactJobFunctions")
  33:                                       .Include("ContactJobFunctions.JobFunctionType")
  34:                                       .Include("ContactOffices")
  35:                                       .Include("ContactPhones")
  36:                                       .Include("ContactPhones.PhoneType")
  37:                                       .Include("ContactSections")
  38:                                       .Include("ContactSections.SectionType")
  39:                          select r;

В ходе тестирования я подтвердил, что декоратор [Query (ResultLimit = 150)] вызовет сбой всего запроса RIA Services, SearchContacts (), и выдаст исключение, если вы увеличите 150 до 500. Я предполагаю, что я попал в общий ограничение данных RIA Services.

Я немного погуглил для этой проблемы, и похоже, что вы можете увеличить размер буфера данных веб-службы WCF (обратите внимание на службу WCF, а не на службу RIA), отредактировав параметры веб-конфигурации, но не уверен, что это также будет работать в Запрос служб RIA.

Если кто-то сталкивался с той же проблемой и нашел решение, ответьте.

заранее спасибо, Джон


person John K.    schedule 15.12.2010    source источник


Ответы (2)


проверьте эту ветку

http://forums.silverlight.net/forums/p/150041/337439.aspx

person Gene Black    schedule 18.12.2010
comment
Джин, спасибо за ссылку ... это сделало свое дело! Кажется немного странным, что Microsoft точно не рекламирует, как это сделать ... было бы неплохо, если бы они хотя бы добавили комментарий web.config с примером, показывающим, как увеличить размер буфера. - person John K.; 20.12.2010

Я предполагаю, что сервер вызывает ошибку?

Или у вас накладные расходы на клиента? Я не столкнулся с какими-либо заметными ограничениями размера буфера на клиенте (хотя я уверен, что они есть).

Вам необходимо увеличить размер буфера для служб WCF при транспортировке большого количества данных. Прямо сейчас у меня нет конкретной ссылки, но выполните поиск по размеру буфера WCF в web.config, и вы должны найти несколько совпадений.

Хорошо, что он генерируется таким образом, поскольку вы, вероятно, не хотите создавать проблему с пропускной способностью из-за возврата данных при генерации. Хотя я помню, что мне было трудно найти информацию, когда я впервые воспользовался этим.

person Gene Black    schedule 18.12.2010