Как я могу установить maxItemsInObjectGraph свойство программно из Приложения Silverlight?

У меня есть приложение Silverlight 3.0, которое использует сервис WCF для общения с базой данных, и когда у меня есть большой объем данных, возвращаемых из сервисных методов, я получаю Сервис Не Найденные ошибки. Я довольно уверен, что решение его состоит в том, чтобы просто обновить maxItemsInObjectGraph свойство, но я создаю сервисный клиент progrogrammatically и не могу найти, где установить это свойство. Вот то, что я делаю прямо сейчас:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None)
{
    MaxReceivedMessageSize = int.MaxValue,                  
    MaxBufferSize = int.MaxValue
};                        

MyService.MyServiceServiceClient client = new MyService.MyServiceProxyServiceClient(binding, new EndpointAddress(new Uri(Application.Current.Host.Source, "../MyService.svc")));
8
задан Corey Sunwold 18 March 2010 в 22:07
поделиться

2 ответа

Это определено не в binding, а в Service Behavior.

В Silveright значение maxItemsInObjectGraph по умолчанию равно int.MaxValue.

Вот статья о том, как изменить его для приложения .NET, но не Silverlight: Программная установка свойства MaxItemsInObjectGraph в клиенте

Фрагмент кода:

protected ISecurityAdministrationService GetSecAdminClient()
{
     ChannelFactory<ISecurityAdministrationService> factory = new    ChannelFactory<ISecurityAdministrationService>(wsSecAdminBinding, SecAdminEndpointAddress);
     foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
     {
       DataContractSerializerOperationBehavior dataContractBehavior =op.Behaviors.Find<DataContractSerializerOperationBehavior>() as DataContractSerializerOperationBehavior;
       if (dataContractBehavior != null)
       {
             dataContractBehavior.MaxItemsInObjectGraph = 2147483647;
       }
     }
    ISecurityAdministrationService client = factory.CreateChannel();
    return client;
}
28
ответ дан 5 December 2019 в 05:18
поделиться

Измените maxItemsInObjectGraph в своей службе WCF для каждой конечной точки, изменение ее в Silverlight означает, что клиент сможет поддерживать поведение, но служба должна его поддерживать. также.

После изменения его в своей службе, повторно сгенерируйте веб-службу прокси / обновления, и вы получите новый ServiceReference.config, который будет включать новое значение maxItemsInObjectGraph

1
ответ дан 5 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: